介绍
Redis发布订阅是一种消息通信模式,发送者发送消息,订阅者接收消息。
Redis客户端可以订阅任意数量的频道。
订阅/发布消息图:
下图展示了频道channel1,以及订阅这个频道的三个客户端--client2,client5和client1之间的关系:
当有新消息通过PUBLISH命令发送给频道channel1时,这个消息就会被发送给订阅他的三个客户端:
命令
1.PSUBSCRIBE pattern [pattern ...]
订阅一个或多个符合指定规则的频道
2.PUBSUB subcommand [argument [argument ...]]
查看订阅与发布系统状态。 |
3.PUNSUBSCRIBE [pattern [pattern ...]]
退订所有给定模式的频道。 |
4.SUBSCRIBE channel [channel ...]
订阅给定的一个或多个频道的信息。 |
5.UNSUBSCRIBE [channel [channel ...]]
指退订给定的频道。
原理
通过SUBSCRIBE命令订阅某频道后,redis-server里维护了一个字典,字典的键就是一个个channel,而字典的值则是一个链表,链表中保存了所有订阅这个channel的客户端你。SUBSCRIBE命令的关键,就是将客户端添加到指定channel的订阅列表中。
通过PUBLISH命令向订阅者发送消息,redis-server会使用给定的频道作为键,在他所维护的channel字典中查找所有客户端链表,遍历链表,将消息发布给所有订阅者。