pubsub_channels字典
Redis将所有频道的订阅关系都保存在服务器状态的pubsub_channels字典里面,这个字典的键是某个被订阅的频道,而键的值则是一个链表,链表里面记录了所有订阅这个频道的客户端:
struct redisServer {
// ...
//保存所有频道的订阅关系
dict *pubsub_channels;
// ...
};
比如说,下图就展示了一个pubsub_channels字典示例,这个字典记录了以下信息:
- client-1、client-2、client-3三个客户端正在订阅"news.it"频道
- 客户端client-4正在订阅"news.sport"频道
- client-5和client-6两个客户端正在订阅"news.business"频道
一、何为频道的订阅
通过执行SUBSCRIBE命令,客户端可以订阅一个或多个频道,从而成为这些频道的订阅者(subscriber):每当有其他客户端使用PUBLISH命令向被订阅的频道发送消息(message)时,频道的所有订阅者都会收到这条消息
演示案例
假设A、B、C三个客户端都执行了命令,那么这三个客户端就是"news.it"频道的订阅者,如下图所示:
c SUBSCRI