Redis消息通知
来源:互联网 发布:药学专业网络教育 编辑:程序博客网 时间:2024/06/05 04:33
消息通知
任务队列
使用任务队列的好处
- 松耦合。生产者和消费者无需知道彼此的实现细节,只需要约定好任务的描述格式。这使得生产者和消费者可以由不同的团队使用不同的编程语言编写
- 易于扩展。消费者可以有多个,而且可以分布在不同的服务器中, 借此可以轻易地降低单台服务器的负载
使用LPUSH和RPOP命令实现队列, 这里介绍一个新命令BRPOP和BLPOP BRPOP key [key ...] timeout(s) BRPOP命令和RPOP命令相似,唯一的区别是当列表中没有元素时BRPOP命令会一直阻塞住连接,直到有新元素加入
优先级队列
利用BRPOP命令可以检测多个key的功能。如果多个键都有元素,则按照从左到右顺序取第一个键中的一个元素。因此,要实现优先级队列,把优先级高的key放到前面就ok了。
发布/订阅 模式
- "发布/订阅"模式中包含两种角色,分别是发布者和订阅者。
- 订阅者可以订阅一个或若干个频道(channel)
- 发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都会收到此消息。
注意
- 执行SUBSCRIBE命令后客户端会进入订阅状态,处于此状态下客户端不能使用除SUBSCRIBE/UNSUBSCRIBE/PSUBSCRIBE/PUNSUBSCRIBE这4个属于“发布/订阅”模式的命令之外的命令,否则会报错
- 使用PUNSUBSCRIBE命令只能退订通过PSUBSCRIBE命令订阅的规则,不会影响直接通过SUBSCRIBE命令订阅的频道;同样UNSUBSCRIBE命令也不会影响通过PSUBSCRIBE命令订阅的规则。另外容易出错的一点是使用PUNSUBSCRIBE命令退订某个规则时不会将其中的通配符展开,而是进行严格的字符串匹配,所以PUNSUBSCRIBE无法退订channel.规则,而是必须使用PUNSUBSCRIBE channel.*才能退订
进入订阅状态后客户端可能收到三种类型的回复。 每种类型的回复都包含3个值,
第一个值为unsubscribe, 当第三个值为0时客户端会退出订阅状态,之后就可以执行其他非“发布/订阅”模式的命令了
示例:
redis A>SUBSCRIBE channel.1Reading messages... (press Ctrl-C to quit)1) "subscribe"2) "channel.1"3) (integer) 1
# PSUBSCRIBE 按规则订阅redis C>PSUBSCRIBE channel.?*Reading messages... (press Ctrl-C to quit)1) "psubscribe"2) "channel.?*"3) (integer) 1redis B>PUBLISH channel.1 hi!(integer) 2#此时,C接收到回复1) "pmessage"2) "channel.?*" # 注意回复多了一个值,第二个值为订阅时使用的通配符3) "channel.1"4) "hi!"
规则channel.?*可以匹配channel.1和channel.10,但不会匹配channel.。
如果发现错误,请轻拍,欢迎留言交流,谢谢
1 0
- Redis消息通知
- Redis基础之消息通知
- 【数据库开发】Redis消息通知
- redis消息通知系统的实现
- [转]Redis消息通知系统的实现
- Redis消息通知系统的实现
- [转]Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis学习笔记(六)--消息通知
- Redis消息通知系统的实现
- Redis消息通知系统的实现(转)
- redis事务、管道及消息通知探究
- VoltDB本地调试指南
- 导入GitHub上已经下载的项目
- not in/not exists 的 null 陷阱
- D3D9Texture::_loadNormTex
- Why are .goutputstream-xxxxx files created in home folder?
- Redis消息通知
- TPA3112D1 试验
- D3DXCreateTextureFromFileInMemoryEx
- httpservlet, struts1, struts2线程安全,单实例,多实例几个关系
- LEETCODE: Sqrt(x)
- oracle创建数据库
- 安卓事件传递
- 关于使用ajaxSubmit异步提交数据时,IE7,8出错的问题
- 阅读深入理解计算机系统(四)--------------- 系统级I/O