分布式缓存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执行
