【赵渝强老师】Redis的消息发布与订阅_Redis


  一般来说消息队列有两种场景,一种是发布者订阅者模式,而另一种是生产者消费者模式。这两种场景的消息队列Redis都能够实现。

  发布者和订阅者通过channel频道进行解偶, 订阅者监听某个channel的消息,当发布者向该channel推送消息时,订阅该channel的消费者都可以收到消息。视频讲解如下:

Redis的消息发布与订阅


【赵渝强老师】Redis的消息发布与订阅


  下图展示了Redis发布者订阅者模式的架构。

【赵渝强老师】Redis的消息发布与订阅_redis_02


  Redis提供的相关操作命令如下:

  • publish:发布消息
命令为格式:publish channel名称 "消息内容"
  • subscribe: 订阅消息
命令为格式:subscribe channel名称
  • psubscribe: 使用通配符定义消息
命令为格式:psubscribe channel*名称

  在发布者和订阅者模式下,Redis维护一个数据字典pubsub_channels用于保存channel以及订阅者的关系,结构如下图所示。

【赵渝强老师】Redis的消息发布与订阅_消息队列_03


  由于Redis支持的消息类型是广播类型的消息,因此这里需要开启三个会话的窗口。一个作为消息的发布者,另外两个作为消息的订阅者。下面是具体的操作步骤。

(1)在消息订阅者的两个会话窗口中启动消息订阅者。

127.0.0.1:6379> subscribe channel1
Reading messages... (press Ctrl-C to quit)

(2)在消息发布者的会话窗口中发布消息。

127.0.0.1:6379> publish channel1  helloworld
(integer) 2

(3)此时在消息订阅者的两个会话窗口中将成功接收到发布的消息,如下图所示。

【赵渝强老师】Redis的消息发布与订阅_redis_04