Redis扩展功能之发布与订阅
发布与订阅这个模式在Zookeeper中有详细的阐述以及Zookeeper是如何实现该功能的(参考Zookeeper应用之一:数据发布与订阅初体验 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)和Zookeeper - 随笔分类 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com))。Redis同样实现了该功能,下面探讨Redis就这个功能是如何实现的。
Redis提供了发布订阅功能用于消息的传输,其发布订阅机制包括三个部分,publisher,subscriber和Channel:
发布者和订阅者都是Redis客户端,Channel则为Redis服务器端;发布者将消息发送到某个的频道,订阅了这个频道的订阅者就能接收到这条消息。
下面通过命令行模式模拟上诉过程,注意使用的命令:
1、Redis客户端1订阅频道1和频道2
2、Redis客户端2将消息发布在频道1和频道2上
3、Redis客户端1接收到频道1和频道2的消息
退订使用unsubscribe命令。以上以完全匹配模式,如何使用模糊匹配模式(类似正则表达式)可以使用psubscribe/punsubscribe。
总结:订阅某个频道或模式:
客户端(client):
属性为pubsub_channels,该属性表明了该客户端订阅的所有频道
属性为pubsub_patterns,该属性表示该客户端订阅的所有模式
服务器端(RedisServer):
属性为pubsub_channels,该服务器端中的所有频道以及订阅了这个频道的客户端
属性为pubsub_patterns,该服务器端中的所有模式和订阅了这些模式的客户端