Redis学习笔记(8)-发布/订阅
package cn.com; import java.util.List; import redis.clients.jedis.Jedis; public class Redis_PubSub { public static Jedis redis = new Jedis("localhost", 6379);// 连接redis /** * PUBLISH channel message * 将信息 message 发送到指定的频道 channel 。 * */ public static void publish(){ redis.publish("student_2", "123"); redis.publish("student_1", "abc1"); } /** * PUBSUB <subcommand> [argument [argument ...]] * PUBSUB 是一个查看订阅与发布系统状态的内省命令, 它由数个不同格式的子命令组成, * 以下将分别对这些子命令进行介绍。 * 列出当前的活跃频道。 * 活跃频道指的是那些至少有一个订阅者的频道, 订阅模式的客户端不计算在内。 * pattern 参数是可选的: * 如果不给出 pattern 参数,那么列出订阅与发布系统中的所有活跃频道。 * 如果给出 pattern 参数,那么只列出和给定模式 pattern 相匹配的那些活跃频道。 * */ public static void pubsub(){ PubSubListener listener=new PubSubListener(); redis.subscribe(listener,new String[]{"student_1","student_2"}); } public static void pubsubChannels(){ List<String> list=redis.pubsubChannels("student_1"); for(String s:list){ System.out.println(s); } } public static void main(String [] args){ publish(); pubsub(); pubsubChannels(); } }
package cn.com; import redis.clients.jedis.JedisPubSub; public class PubSubListener extends JedisPubSub { // 取得订阅的消息后的处理 public void onMessage(String channel, String message) { System.out.println("取得订阅消息:"+channel + "=" + message); } // 初始化订阅时候的处理 public void onSubscribe(String channel, int subscribedChannels) { // System.out.println(channel + "=" + subscribedChannels); } // 取消订阅时候的处理 public void onUnsubscribe(String channel, int subscribedChannels) { // System.out.println(channel + "=" + subscribedChannels); } // 初始化按表达式的方式订阅时候的处理 public void onPSubscribe(String pattern, int subscribedChannels) { // System.out.println(pattern + "=" + subscribedChannels); } // 取消按表达式的方式订阅时候的处理 public void onPUnsubscribe(String pattern, int subscribedChannels) { // System.out.println(pattern + "=" + subscribedChannels); } // 取得按表达式的方式订阅的消息后的处理 public void onPMessage(String pattern, String channel, String message) { System.out.println(pattern + "=" + channel + "=" + message); } }