- Redis发布订阅简介
(1) 定义:Redis发布订阅(pub/sub)是一种消息通讯模式:发送者发送消息,订阅者接受信息
(2) 具体操作:Redis的SUBSCRIBE命令可以让客户端订阅任意数量的频道,每当有新信息发送到被订阅的频道时,信息就会被发送给所有订阅指定频道的客户端
(3) 实例
下图展示了频道channel1,以及订阅该频道的客户端----client2、client5、client1之间的关系
当有新消息通过PUBLISH发送给频道channel1时,这个消息就会被发送给订阅它的三个客户端:
- 发布/订阅使用
(1) 发布订阅模式
① 基于频道(channel)的发布/订阅
1) 发布/订阅模式包含两种角色,分别是发布者和订阅者。发布者可以向指定的频道发送消息;订阅者可以订阅一个或者多个频道,所有订阅此频道的订阅者都会收到此消息
2) 图示
② 基于模式(pattern)的发布/订阅
- 基于频道(channel)的发布/订阅是如何实现的?
(1) 底层是通过字典(图中的publish_channel)实现的,这个字典就用于保存订阅频道的信息:字典的键为正在被订阅的频道,而字典的值则是一个链表,链表中保存了所有订阅这个频道的客户端。
(2) 数据结构
① 实例:在下图展示的这个pubsub_channels的示例中,client2、client5、client1就订阅了channel1,而其他频道也被别的客户端所订阅
② 图示
(3) 订阅