点击(此处)折叠或打开
-
struct redisServer{
-
//...
-
dict *pubsub_channels;
-
//...
- };
而模式的订阅则是保存在一个pubsub_patterns的链表里面
,链表中的每个节点都包含着一个pubsubPattern结构,
点击(此处)折叠或打开
-
struct redisServer{
-
//...
-
list *pubsub_patterns;
-
//...
-
};
-
typedef struct pubsubPattern{
-
redisClient *client;
-
robj *pattern;
- };
发送消息
当一个redis客户端执行PUBLISH 命令将消息message发送给频道channel的时候,服务器将会执行以下两个动作:1. 将消息message发送给channel频道的所有订阅者
2. 搜索模式链表,发送message给所有匹配pattern的客户端