一般来说消息队列有两种场景,一种是发布者订阅者模式,而另一种是生产者消费者模式。这两种场景的消息队列Redis都能够实现。
发布者和订阅者通过channel频道进行解偶, 订阅者监听某个channel的消息,当发布者向该channel推送消息时,订阅该channel的消费者都可以收到消息。视频讲解如下:
下图展示了Redis发布者订阅者模式的架构。
Redis提供的相关操作命令如下:
- publish:发布消息
命令为格式:publish channel名称 "消息内容"
- subscribe: 订阅消息
命令为格式:subscribe channel名称
- psubscribe: 使用通配符定义消息
命令为格式:psubscribe channel*名称
在发布者和订阅者模式下,Redis维护一个数据字典pubsub_channels用于保存channel以及订阅者的关系,结构如下图所示。
由于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)此时在消息订阅者的两个会话窗口中将成功接收到发布的消息,如下图所示。