分布式缓存Redis之发布/订阅(pub/sub)

对发布者和订阅者进行解构(decoupling),可以极大地提高系统的扩展性(scalability),并得到一个更动态的网络拓扑(network topology)。

redis可以订阅任意数量的频道。

频道channel1,和订阅频道的三个客户端-client2。。。。之间的关系。

当有新消息 通过publish命令发给频道channel1时,这个消息就会被发送给订阅它的三个客户端

二:原理

RedisServer有两个重要的结构:

1:channels:实际是一个key-value的map结构,key为订阅的频道,value为client的list

2:patterns:存放模式+client地址的列表

流程:从pubsub_channel中找出跟publish中channel相符的client-list,然后再去pubsub_patterns中找出每一个相符的pattern和client。向这些客户端发送publish的消息。

三:信息格式

Redis 的发布与订阅实现也支持模式匹配(pattern matching): 客户端可以订阅一个带 * 号的模式, 如果某个/某些频道的名字和这个模式匹配, 那么当有信息发送给这个/这些频道的时候, 客户端也会收到这个/这些频道的信息。

redis> PSUBSCRIBE news.*

客户端将接收来自news.art.figurative、news.music.jazz等频道的信息。

四:实例

以下实例演示了发布订阅是如何工作的,在我们实例中我们订阅的频道为redischat在客户端1执行

经验分享 程序员 微信小程序 职场和发展