辛星浅析Redis中的pub/sub功能
2015-02-24 19:33
387 查看
pub/sub功能也就是publish/subscribe功能,也就是发布订阅功能。基于事件的系统中,pub/sub是目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者比如客户端以事件订阅的方式表达出它有兴趣接收的一个事件或一类事件,发布者比如服务器可以将订阅者兴趣的事件随时通知相关订阅者。
pub/sub功能可以有三个非耦合:
(1)时间非耦合,也就是发布者和订阅者不必同时在线,它们不必同时参与交互。
(2)空间非耦合,也就是发布者和订阅者不必相互知道对方所在的位置。发布者通过事件服务发布时间,订阅者通过事件服务间接获得事件。发布者和订阅者不需要拥有直接到对方的引用,也不必知道有多少个订阅者或者是发布者参与交互。
(3)同步非耦合,发布/订阅是异步模式。发布者可以不断的产生事件,而订阅者(通过一个回调)则可以异步地得到产生事件的通知。
pub/sub功能按照订阅方式分为基于主题(topic-based)、基于内容(content-based)、基于类型(type-based)的方式。它是可适用于可扩展性高、松散耦合系统的分布式交互模型。在抽象层中,它的时间非耦合、空间非耦合和空间非耦合性可允许参与者不依赖于另一个而独立操作,具有一定的可扩展性。但是在实现的时候,可扩展性依然受到其他原因的牵制。
pub/sub通常适用的范围:
(1)灵活的订阅要求复杂的过滤和路由算法
(2)高可用性开销(事件侦听、日志重传)
(3)消息认可带来的网络流量消耗
(4)庞大的订阅者数据带来的系统开销
基于事件的pub/sub中间件的开发与利用在一定程度上可以提高系统的效率。
Redis中的实现流程:
(1)订阅者订阅两个topic,范例:
subscribe first second
(2)发布者发布信息,范例:
publish first hello
publish second world
(3)订阅者取消一个topic,返利:
unsubscribe first
pub/sub功能可以有三个非耦合:
(1)时间非耦合,也就是发布者和订阅者不必同时在线,它们不必同时参与交互。
(2)空间非耦合,也就是发布者和订阅者不必相互知道对方所在的位置。发布者通过事件服务发布时间,订阅者通过事件服务间接获得事件。发布者和订阅者不需要拥有直接到对方的引用,也不必知道有多少个订阅者或者是发布者参与交互。
(3)同步非耦合,发布/订阅是异步模式。发布者可以不断的产生事件,而订阅者(通过一个回调)则可以异步地得到产生事件的通知。
pub/sub功能按照订阅方式分为基于主题(topic-based)、基于内容(content-based)、基于类型(type-based)的方式。它是可适用于可扩展性高、松散耦合系统的分布式交互模型。在抽象层中,它的时间非耦合、空间非耦合和空间非耦合性可允许参与者不依赖于另一个而独立操作,具有一定的可扩展性。但是在实现的时候,可扩展性依然受到其他原因的牵制。
pub/sub通常适用的范围:
(1)灵活的订阅要求复杂的过滤和路由算法
(2)高可用性开销(事件侦听、日志重传)
(3)消息认可带来的网络流量消耗
(4)庞大的订阅者数据带来的系统开销
基于事件的pub/sub中间件的开发与利用在一定程度上可以提高系统的效率。
Redis中的实现流程:
(1)订阅者订阅两个topic,范例:
subscribe first second
(2)发布者发布信息,范例:
publish first hello
publish second world
(3)订阅者取消一个topic,返利:
unsubscribe first
相关文章推荐
- linux下使用hiredis异步API实现sub/pub消息订阅和发布的功能 标签: hiredishiredis异步APIhiredis事件处理redis消息订阅发布redis c接口 2016-
- redis的Pub/Sub功能
- 使用python的redis 实现消息的pub/sub功能
- Redis编程实践 pub/sub
- linux下使用hiredis异步API实现sub/pub消息订阅和发布的功能
- php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用
- redis命令详解与使用场景举例——Pub与Sub(发布订阅)
- Spring-data-redis: pub/sub消息订阅
- Redis 命令 - Pub/Sub
- Redis客户端之Jedis(Key、String、Set、List、pub/sub、cluster、pool、pipleline)
- 快速掌握Redis——第五招:pub/sub 发布/订阅
- Redis客户端之Jedis(Key、String、Set、List、pub/sub、cluster、pool、pipleline)
- redis发布和订阅(pub/sub)
- NoSQL之Redis---PUB/SUB(订阅与发布)---JAVA实现
- NoSQL数据库之Redis数据库管理六(Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存)
- Redis实践:使用Pub/Sub实现远程Trace或Log信息跟踪监控
- .Net Redis实现发布/订阅(RedisPubSubServer)
- redis(五) 高级应用(事务处理,持久化操作,pub_sub、虚拟内存)
- 辛星浅析Redis中的有序集合
- redis-2.6.16源码分析之pub-sub系统