-
-
角色
-
消息发布者:发布消息到频道
-
频道:消息队列
-
消息订阅者:从频道接收消息
-
-
Redis客户端可以订阅任意数量的频道
-
命令
-
subscribe channel [channel ...]:订阅给定的频道,可以订阅多个
-
publish channel message:发送消息到频道
消息接收者同步接收消息
-
psubscribe pattern [pattern...]:订阅一个或多个符合指定模式的频道
-
punsubscribe [pattern [pattern ...]]:退订所有给定模式的频道
-
unsubscribe [channel [channel ...]]:退订给定的频道
-
pubsub subcommand [argument [argument ...]]:查看订阅与发布系统状态
-
-
原理
-
pubsub.c文件中是Redis的源码
-
通过
subscribe
命令订阅一个频道后,redis-server里维护了一个字典-
key:频道
-
value:订阅了该频道的消息订阅者,一个链表
此命令的关键点在于将订阅者添加到给定频道的订阅者链表中
-
-
通过
publish
命令发送消息后,redis-server会使用指定的频道作为键值,查找字典中在此键值上的所有订阅了该频道的用户,遍历链表,将消息发送给所有订阅者
-
-
应用场景
-
实时消息系统
-
实时聊天室
-
-