大家晚上好,今天的内容是关于Redis的“发布/订阅”的消息机制的。
说道“消息机制”,在前几天总结Redis列表数据结构应用场景的时候曾提到,可以通过列表的lpush+brpop实现“阻塞消息队列”。那么,除了通过列表完成消息队列,还有没有其它的消息机制呢?当然有!这就是Redis提供的基于“发布/订阅”模式的消息机制,在此种模式下,消息的发布者和订阅者并不直接进行通信,而是发布者将消息发布到指定的频道(channel)上,这时 ,订阅该频道的每个客户端就可以收到该消息了。示例图如下:
看两个命令吧:
发布消息
publish channel message
发布者向某频道发布消息
订阅消息
subscribe channel [channel...]
订阅者订阅若干个频道
实际操作是这样的:
1.发布者向频道“channel:music”发送了一条消息,由于此时没有订阅者,所以返回结果为0,可见,返回结果为订阅者的个数
2.订阅者订阅这个频道
此时,订阅者在执行订阅命令之后进入了订阅状态,而且,这个订阅者并未接收到发布者之前在该频道发布的消息,因为Redis不会对发布的消息进行持久化。
3. 发布者再发送另一条消息:
4.这一次,订阅者就能收到该频道的消息了:
虽然Redis的消息队列与专业的消息队列Kafka相比还比较简陋,但还是那句话,Redis赢就赢在简单!
各位,冲啊!
领取专属 10元无门槛券
私享最新 技术干货