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);  
    }  

}

  

原文地址:https://www.cnblogs.com/zuolun2017/p/5611982.html