码迷,mamicode.com
首页 > 其他好文 > 详细

小贝_redis高级应用-发布与订阅

时间:2015-08-09 10:52:19      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:nosql   发布   redis   应用   

redis高级应用-发布与订阅

一、发布与订阅(pub/sub)功能

二、发布与订阅(pub/sub)机制

三、redis发布与订阅(pub/sub)的实现

 

 

一、发布与订阅(pub/sub)功能

Pub/Sub功能(meansPublish, Subscribe)即发布及订阅功能。基于事件的系统中,Pub/Sub是目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者(如客户端)以事件订阅的方式表达出它有兴趣接收的一个事件或一类事件;发布者(如服务器)可将订阅者感兴趣的事件随时通知相关订阅者

发布/订阅的简易模型如下图所示:

 技术分享


二、发布与订阅(pub/sub)类别

      1、时间非耦合:发布者和订阅者不必同时在线,它们不必同时参与交互

 技术分享


      2、空间非耦合:发布者和订阅者不必相互知道对方所在的位置。发布者通过事件服务发布事件,订阅者通过事件服务间接获得事件。发布者和订阅者不需要拥有直接到对方的引用,也不必知道有多少个订阅者或者是发布者参与交互

技术分享

      3、同步非耦合:发布者/订阅者是异步模式。发布者可不断地生产事件,而订阅者(通过一个回调)则可异步地得到产生事件的通知

 技术分享

总结:

Pub/Sub是可适用于可扩展要求高、松散耦合系统的分布式交互模型。

在抽象层中,它的时间非耦合、空间非耦合和同步非耦合性可允许参与者不依赖另一个而独立操作,具有一定的可扩展性;然而在实现层,可扩展性仍受其他原因的牵制。

例如:1、灵活的订阅要求复杂的过滤和路由算法;

        2、高可用性开销(事件侦听、日志重传);

        3、消息认可带来的网络流量消耗;

        4、庞大的订阅者数据带来的系统开销;

基于事件的Pub/Sub中间件的开发与利用在一定程度上可以提高系统的效率

 

三、redis发布与订阅(pub/sub)的实现

      redis 通过 publish 、subscribe、unsubscribe等命令实现了订阅与发布模式, 这个功能提供两种信息机制,分别是订阅/发布到频道和订阅/发布到模式。在这个实现中, 发送者(发送信息的客户端)不是将信息直接发送给特定的接收者(接收信息的客户端),而是将信息发送给频道(channel)或模式, 然后由频道/模式将信息转发给所有对这个频道感兴趣的订阅者

      1、publish、subscribe、unsubscribe、psubscribe、punsubscribe命令说明

            a、subscribe:订阅频道

            b、unsubscribe:退订频道

            c、publish:往某个频道,发布消息

           d、psubscribe: 订阅模式频道

           e、punsubscribe: 退订模式频道

      2、频道的订阅与信息发布简单实例

技术分享技术分享技术分享

(备注: 订阅端订阅频道one,然后再发布端发布消息’hello world’,此时,订阅端就会显示发布的消息. )

      3、基于模式的订阅与信息发布简单实例

技术分享技术分享技术分享

 

      4、消息格式

      4.1、如果是订阅频道,则返回消息类型(message),频道名称、具体消息内容

      4.2、如果是基于模式,则返回消息类型(pmessage)、模式名称、具体频道名称、具体消息内容

      5、理解订阅频道和订阅模式

      订阅频道,客户端则需要指明具体相应订阅的频道的名称。相反,订阅模式,客户端可以订阅一个带 * 号的模式, 如果某个/某些频道的名字和这个模式匹配, 那么当有信息发送给这个/这些频道的时候, 客户端也会收到这个/这些频道的信息

      

版权声明:本文为博主原创文章,未经博主允许不得转载。

小贝_redis高级应用-发布与订阅

标签:nosql   发布   redis   应用   

原文地址:http://blog.csdn.net/u014795720/article/details/47373233

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!