美文网首页
redis发布订阅策略

redis发布订阅策略

作者: 48892085f47c | 来源:发表于2016-11-21 20:44 被阅读0次

背景

多个客户端client1、client2、client3订阅redis服务,当redis服务有修改时,将修改内容发布至订阅的客户端。

实现方案

1.定义实现抽象类JedisPubSub的RedisMsgPubSubListener

Jedis定义了抽象类JedisPubSub,在这个类中,定义publish/subsribe的回调方法。通过继承JedisPubSub类并重新实现这些回调方法,当publish/subsribe事件发生时,我们可以定制自己的处理逻辑。

public class RedisMsgPubSubListener extends JedisPubSub {    
public RedisMsgPubSubListener() {        super();    }    
@Override    
public void unsubscribe() {        super.unsubscribe();    }    
@Override    
public void unsubscribe(String... channels) {        super.unsubscribe(channels);    }    
@Override    
public void subscribe(String... channels) {        super.subscribe(channels);    }    
@Override    
public void psubscribe(String... patterns) {        super.psubscribe(patterns);    }    
@Override    
public void punsubscribe() {        super.punsubscribe();    }    
@Override    
public void punsubscribe(String... patterns) {        super.punsubscribe(patterns);    }    
@Override    
public boolean isSubscribed() {        return super.isSubscribed();    }    
@Override    
public void proceedWithPatterns(Client client, String... patterns) {        super.proceedWithPatterns(client, patterns);    }    
@Override    
public void proceed(Client client, String... channels) {        super.proceed(client, channels);    }    
@Override    
public int getSubscribedChannels() {        return super.getSubscribedChannels();    }    
@Override   
 public void onMessage(String channel, String message) {        System.out.println("channel:" + channel + "receives message :" + message);        //this.unsubscribe();    }    
@Override    
public void onPMessage(String pattern, String channel, String message) {    }    
@Override    
public void onSubscribe(String channel, int subscribedChannels) {        System.out.println("channel:" + channel + "is been subscribed:" + subscribedChannels);    }    
@Override    
public void onUnsubscribe(String channel, int subscribedChannels) {        System.out.println("channel:" + channel + "is been unsubscribed:" + subscribedChannels);    }   
@Override    
public void onPUnsubscribe(String pattern, int subscribedChannels) {    }    
@Override    
public void onPSubscribe(String pattern, int subscribedChannels) {    }}

单元测试

订阅测试

@Testpublic void sub1Test(){    
Jedis jedis = new Jedis("localhost");    
RedisMsgPubSubListener listener = new RedisMsgPubSubListener();    
listener.subscribe("redisChatTest");   
 jedis.subscribe(listener, "redisChatTest");
}

发布测试

@Test
public void pubTest() throws Exception{    
Jedis jedis = new Jedis("localhost");    
jedis.publish("redisChatTest", "我是天才");   
 jedis.publish("redisChatTest", "我牛逼");    
jedis.publish("redisChatTest", "哈哈");
}

输出结果

输出结果.png

相关文章

  • redis发布订阅策略

    背景 多个客户端client1、client2、client3订阅redis服务,当redis服务有修改时,将修改...

  • redis内部原理揭秘

    课程目标 过期时间设置及原理分析 发布订阅模式 Redis持久化及原理分析 Redis的内存回收策略 Redis单...

  • Redis高级

    Redis高级 发布订阅 Redis提供了发布订阅功能,可以用于消息的传输 Redis的发布订阅机制包括三个部分,...

  • Redis监听官方版本修改

    项目业务需求用到Redis订阅发布,于是去百度订阅发布,搜索内容是springBoot 的Redis订阅发布 然而...

  • 101-Redis 订阅与发布

    订阅与发布 ¶Redis 发布订阅 http://www.redis.net.cn/order/3633.html...

  • 设计模式之发布订阅模式(2) Redis 发布/订阅模式

    Redis 发布/订阅命令 Redis 通过 PUBLISH 、 SUBSCRIBE 等命令实现了发布订阅模式。该...

  • 04给女朋友讲讲Redis-发布订阅

    一、Redis发布订阅介绍 Redis发布订阅(pub/sub)是一种消息通信模式:发布者(pub)发送消息,订阅...

  • Redis实现不可靠发布/订阅功能

    Redis的发布/订阅模型 Redis 通过 PUBLISH 、 SUBSCRIBE 等命令实现了订阅与发布模式,...

  • redis-订阅与发布

    redis-订阅与发布 Redis 通过 PUBLISH 、 SUBSCRIBE 等命令实现了订阅与发布模式, 这...

  • Redis高级知识

    Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(...

网友评论

      本文标题:redis发布订阅策略

      本文链接:https://www.haomeiwen.com/subject/mjkupttx.html