(一)redis发布订阅
2018-01-11 15:32
357 查看
一、创建Jedis客户端
二、创建消息订阅和发布监听器类
三、创建初始化消息监听器类
四、创建订阅通道启动类,下面代码订阅了三个通道redisChat、redisChat1、redisChat2
五、创建发布消息到通道的客户端类
package redis.v1.client.server; import redis.clients.jedis.Jedis; public enum RedisClient { Clent; private static Jedis jedis = null; public static Jedis getJedis() { if(jedis == null) { jedis = new Jedis("127.0.0.1",6379); jedis.auth("619868"); } return jedis; } }
二、创建消息订阅和发布监听器类
package redis.v1.client.listener; import redis.clients.jedis.JedisPubSub; public class RedisMsgPubSubListener extends JedisPubSub{ /** * 接收订阅通道发来的消息 * @param channel 通道名称 * @param message 消息 */ @Override public void onMessage(String channel, String message){ System.out.println("onMessage---"+channel+"---"+message); } @Override public void onPMessage(String pattern, String channel, String message){ System.out.println("onPMessage---"+pattern+"---"+channel+"---"+message); } /** * 订阅通道信息 * @param channel 订阅的通道名 * @subscribedChannels 订阅的通道数量 */ @Override public void onSubscribe(String channel, int subscribedChannels){ System.out.println("onSubscribe---"+channel+"---"+subscribedChannels); } /** * 取消订阅的通道 * @param 通道名 * @param 剩余通道数量 */ @Override public void onUnsubscribe(String channel, int subscribedChannels){ System.out.println("onUnsubscribe---"+channel+"---"+subscribedChannels); } @Override public void onPUnsubscribe(String pattern, int subscribedChannels){ System.out.println("onPUnsubscribe---"+pattern+"---"+subscribedChannels); } /** * 订阅信息通道(使得客户端订阅指定模式的频道,支持glob风格的模式) * @param pattern 通道名称或者正则匹配表达式 * @param subscribedChannels 通道数量 */ @Override public void onPSubscribe(String pattern, int subscribedChannels){ System.out.println("onPSubscribe---"+pattern+"---"+subscribedChannels); } /** * 监听通过PING命令测试客户端和服务端的联通行是否有效 * @param pattern 测试通道名称或者正则匹配的模式 */ @Override public void onPong(String pattern){ System.out.println("onPong"+"---"+pattern); } }
三、创建初始化消息监听器类
package redis.v1.client.common; import redis.v1.client.listener.RedisMsgPubSubListener; public class PubSubCommons { public static RedisMsgPubSubListener listener = null; static { listener = new RedisMsgPubSubListener(); } }
四、创建订阅通道启动类,下面代码订阅了三个通道redisChat、redisChat1、redisChat2
\package redis.v1.client; import java.util.Iterator; import java.util.Set; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPubSub; import redis.v1.client.common.PubSubCommons; import redis.v1.client.listener.RedisMsgPubSubListener; import redis.v1.client.server.RedisClient; import redis.v1.client.thread.UnsubscribeRunable; public class RedisSubscribe { public static void main(String[] args) { Jedis jedis = RedisClient.getJedis(); System.out.println("订阅服务器运行状态:"+jedis.ping()); String[] str = {"redisChat","redisChat1","redisChat2"}; jedis.subscribe(PubSubCommons.listener, str); // jedis.close(); } }
五、创建发布消息到通道的客户端类
package redis.v1.client; import java.util.Iterator; import java.util.Set; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPubSub; import redis.v1.client.common.PubSubCommons; import redis.v1.client.listener.RedisMsgPubSubListener; import redis.v1.client.server.RedisClient; public class RedisPSubscribe { public static void main(String[] args) { Jedis jedis = RedisClient.getJedis(); System.out.println("发布服务器运行状态:"+jedis.ping()); try { Thread.sleep(1000*1); jedis.publish("redisChat".getBytes(), "---redisChat发送消息...".getBytes()); Thread.sleep(1000*3); jedis.publish("redisChat1".getBytes(), "---redisChat1发送消息...".getBytes()); Thread.sleep(1000*5); jedis.publish("redisChat2".getBytes(), "---redisChat2发送消息...".getBytes()); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } // jedis.close(); } }
相关文章推荐
- redis发布、订阅
- redis实现发布/订阅
- Redis-发布订阅
- Redis发布订阅和应用场景
- 六 redis学习笔记之发布订阅
- Redis 发布/订阅
- Redis3.0的发布与订阅
- (一)redis发布订阅
- (一)redis发布订阅
- .net core如何使用Redis发布订阅
- redis 消息订阅和发布
- 六 redis学习笔记之发布订阅
- Redis常用命令(四)数据库管理、键管理、订阅发布
- Redis发布订阅
- redis的发布和订阅功能
- Redis 发布/订阅模式
- redis-订阅与发布
- spring-redis实现订阅发布
- Redis-消息发布与订阅
- springboot结合redis实现redis订阅发布模式