一,储备知识
1,发布与订阅功能的作用
一个客户单可以订阅一个或多个频道,成为这些频道的订阅者,每当有其他客户端向该频道发送消息,那么该频道的所有订阅者都会收到这个消息;
2,发布与订阅所涉及的命令
a,publish:由于向某个频道发送消息;
b,subscribe[səbˈskraɪb] :用于客户单订阅某个频道;
c,psubscribe:用于客户端订阅某个模式;pattern:模式
一,频道的订阅与退订
1,频道的订阅
每当客户端执行subscribe命令,订阅某个频道的时候,那么服务器就会将客户端的信息存入到redisServer类中的pubsub_channel字典属性中;该属性的键是频道,值为一个链表,用来记录订阅了该链表的所有客户端;如下所示:
2,频道的退订
频道退订命令使用unsubscribe命令,该命令的作用就是使得客户端退订该频道,那么服务器就会将对应的客户端信息从链表中删除;如下所示,虚线框为退订客户端
二,模式的订阅与退订
1,模式的订阅
当客户单执行了psubscribe命令的时,服务器就会在redisServer结构的pubsub_patterns属性中创建对应的pubsub_pattern类来保存客户端的信息以及订阅的模式;如下所示:
2,模式的退订
当客户端执行了punsubscribe命令之后,那么服务器就会将对应的信息移除,如下所示:
三,发送消息
1,服务器的做法
a,将消息发送给所有频道的订阅者;
b,将消息发送给模式的订阅者,前提是该模式与频道相匹配
四,查看订阅信息
1,pubsub channels命令
a,作用:用于返回服务器当前被订阅的频道
b,举例:前者是pubsub channels命令,后者是pubsub channel pattern
2,pubsub numsub
a,作用:用于返回频道订阅者的数量
b,举例:
3,pubsub numpat
a,作用:用于返回服务器当前被订阅模式的数量
b,举例: