【数据库开发】Redis消息通知
来源:互联网 发布:adobe pdf reader mac 编辑:程序博客网 时间:2024/06/05 00:28
消息通知
任务队列
使用任务队列的好处
- 松耦合。生产者和消费者无需知道彼此的实现细节,只需要约定好任务的描述格式。这使得生产者和消费者可以由不同的团队使用不同的编程语言编写
- 易于扩展。消费者可以有多个,而且可以分布在不同的服务器中, 借此可以轻易地降低单台服务器的负载
使用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.。
0 0
- 【数据库开发】Redis消息通知
- Redis消息通知
- 服务器数据库系列 - Redis消息通知系统的实现
- Redis-9.8 数据库通知
- Redis基础之消息通知
- redis消息通知系统的实现
- [转]Redis消息通知系统的实现
- Redis消息通知系统的实现
- [转]Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis消息通知系统的实现
- Redis学习笔记(六)--消息通知
- Redis消息通知系统的实现
- 2017.1.20【初中部 】普及组模拟赛C组 鸡腿の小路 题解
- 程序员面试金典——解题总结: 9.18高难度题 18.13给定一份几百万个单词的清单,设计一个算法,创建由字母组成的最大矩形
- How to Take ‘Snapshot of Logical Volume and Restore’ in LVM
- c++string
- java小项目,凯撒加密与解密的实现
- 【数据库开发】Redis消息通知
- 抓取豆瓣2016年电影/分类_python
- css5
- OpenCV 打开摄像头并短暂延时后获取一张图片
- C++11中的std::function
- hdu1052
- C++赋值运算符谨记
- CentOS下二进制安装MySQL
- ggplot里的各种mapping