(一)redis发布订阅
2018-01-11 15:32
246 查看
一、创建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 学习手册之发布和订阅pubsub操作
- Redis系列-JAVA与redis整合-Spring Data Redis实现一个订阅/发布系统
- Java实现redis的消息订阅和发布
- Redis学习笔记8--Redis发布/订阅
- Redis 订阅与发布
- 快速掌握Redis——第五招:pub/sub 发布/订阅
- redis发布与订阅机制
- Redis订阅发布(Java端实现)
- Redis高级实用特性:发布及订阅消息
- 【Redis】jedis客户端实现redis消息的发布订阅(实时消息中间件)
- redis-订阅与发布
- redis发布、订阅
- Redis 设计与实现 (六)--发布订阅
- StackExchange.Redis 使用-发布订阅 (二)
- (一)redis发布订阅
- redis的发布/订阅模式
- redis发布与订阅
- Redis发布订阅
- Python -- Redis 发布订阅