首页 > Redis > 正文

Redis应用之订阅与发布

佛若2018-09-170人围观

Redis应用之订阅与发布

一、利用redis-cli实现订阅发布

1.1 启动服务

  1. ./src/redis-server redis.conf

1.2 客户端A,订阅频道

  1. ./src/redis-cli
  2. 127.0.0.1:6379> subscribe channel1
  3. Reading messages... (press Ctrl-C to quit)

1.3 客户端B,发布频道数据

  1. ./src/redis-cli
  2. 127.0.0.1:6379> publish channel1 "test message"
  3. (integer) 1

1.4 客户端A,输出

  1. 1) "message"
  2. 2) "channel1"
  3. 3) "test message"

至此利用redis-cli实现消息订阅与发布

二、Java利用Jedis实现

2.1 创建订阅者

  1. /**
  2. * 订阅者
  3. * @author GaoYuan
  4. * @date 2018/9/17 下午9:06
  5. */
  6. public class Subscriber extends JedisPubSub{
  7. @Override
  8. public void onMessage(String channel, String message) {
  9. System.out.println("收到频道【" + channel + "】的消息:" + message);
  10. }
  11. @Override
  12. public void onSubscribe(String channel, int subscribedChannels) {
  13. System.out.println("成功订阅【"+ channel +"】");
  14. }
  15. public static void main(String[] args){
  16. Jedis jedis = null;
  17. try {
  18. jedis = new Jedis(JedisConfig.HOST, JedisConfig.PORT);
  19. jedis.subscribe(new Subscriber(), "channel1");
  20. }catch (Exception e){
  21. e.printStackTrace();
  22. }finally {
  23. if (jedis != null) {
  24. jedis.close();
  25. }
  26. }
  27. }
  28. }

2.2 创建发布者

  1. /**
  2. * 发布者
  3. * @author GaoYuan
  4. * @date 2018/9/17 下午9:06
  5. */
  6. public class Publisher {
  7. public static void main(String[] args){
  8. Jedis jedis = null;
  9. try {
  10. jedis = new Jedis(JedisConfig.HOST, JedisConfig.PORT);
  11. jedis.publish("channel1", "你好,我是foruo!");
  12. }catch (Exception e){
  13. e.printStackTrace();
  14. }finally {
  15. if (jedis != null) {
  16. jedis.close();
  17. }
  18. }
  19. }
  20. }

2.3 启动服务测试

先启动订阅者,控制台打印

  1. 成功订阅【channel1

再启动发布者,在订阅者控制台成功打印如下内容

  1. 收到频道【channel1】的消息:你好,我是foruo

至此利用jedis完成简单的发布/订阅功能。完整代码见

https://gitee.com/gmarshal/foruo-demo/tree/master/foruo-demo-redis/foruo-demo-redis-pubsub

博客

开源中国博客地址

https://my.oschina.net/gmarshal/blog/2052792

个人博客地址

http://blog.foruo.top

欢迎关注我的个人微信订阅号:(据说这个头像程序猿专用)

输入图片说明