发布与订阅(又称pub/sub),是一种消息通信模式,特点是订阅者(listener)负责订阅频道(channel),发送者(publisher)负责向频道发送二进制字符串消息。每当有消息被发送至给定频道时,频道的所有订阅者都会收到消息。
发布与订阅
SUBSCRIBE(订阅给定的一个或多个频道)
UNSUBSCRIBE(退订给定的一个或多个频道,如果执行时没有给定任何频道,那么退订所有频道)
PUBLISH(向给定频道发送消息)
PSUBSCRIBE(订阅与给定模式相匹配的所有频道)
PUNSUBSCRIBE(退订给订的模式,如果执行时没有给订任何模式,那么退订所有模式)
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
简单示例
上图中我一共开了三个窗口,第一个窗口作为发送者向频道test1发送消息,第二和第三个窗口作为订阅者订阅了频道test1,发布成功后会返回接收到这条消息的订阅者数量。发出去的消息不会被持久化,也就是说当客户端订阅test1后只能收到后续发布到该频道的消息,之前发送到就收不到了,而当没有订阅者时, 消息会被直接丢弃。
退订后将不会受到发送者发送的消息
redis还支持模式订阅和模式退订,*为模糊匹配符。
订阅所有频道的消息:psubscribe *
比如订阅以ziroom.开头的所有频道:psubscribe ziroom.*
取消所有频道的消息:punsubscribe *
比如取消订阅以ziroom.开头的所有频道punsubscribe ziroom*
源码学习:15天玩转redis