Redis的发布订阅的使用方法
来源:互联网 发布:小葫芦直播平台大数据 编辑:程序博客网 时间:2024/05/22 14:12
一、相关命令概览
1.subscribe 订阅消息
2.psubscribe 利用模式匹配订阅消息
3.publish 发布消息
4.unsubscribe 取消普通订阅
5.punsubscribe 取消模式匹配的订阅
6.pubsub 自省命令
二、发布订阅的作用
发布者无需将消息发送给特定的订阅者,而是将消息发送给某一频道,发布者并不关心订阅者是谁,与此同时,订阅者也不关心它所订阅频道的发布者是谁,只关注它自己订阅的频道消息。这种模式的发布者和订阅者之间不存在耦合关系,允许更大的可移植性和动态网络拓扑。
该功能可以构建即时通信应用,比如网络聊天室(chatroom)和实时广播、实时提醒等。
三、六大命令使用详解
1.subscribe 订阅消息
开启两个redis数据库客户端,开启两个订阅者,均订阅message_1频道。
127.0.0.1:6379> subscribe message_1Reading messages... (press Ctrl-C to quit)1) "subscribe"2) "message_1"3) (integer) 11) "message"2) "message_1"3) "string_1"
2.publish 发布消息
开启了两个redis客户端,分别订阅了message_1这个消息,当发布message_1消息时,返回结果为2,意味着有两个订阅者接收到消息。
[root@10-6-3-198 ~]# redis-cli127.0.0.1:6379> publish message_1 string_1(integer) 2
3.psubscribe 利用模式匹配订阅消息
开启另一个redis客户端,利用模式匹配的方式订阅频道,模式匹配字符串为message*,所以会订阅到message_1这个频道,由于之前已经有两个订阅者,所以此时发布者再发布消息,返回结果为3。
127.0.0.1:6379> psubscribe message*Reading messages... (press Ctrl-C to quit)1) "psubscribe"2) "message*"3) (integer) 1 # 订阅了1个频道1) "pmessage" # 订阅消息的方式2) "message*" # 匹配模式字符串3) "message_1" # 具体匹配的频道4) "string_2" # 接收到的消息
发布者的状态为:
127.0.0.1:6379> publish message_1 string_2(integer) 3
4.unsubscribe 取消普通订阅
redis的客户端工具并不能实现该操作,订阅频道时,提示press Ctrl-C to quit,但是由于误操作,press Ctril-Z,导致某个redis客户端的订阅者并没有被取消,一直存在着。
解决方法是改变redis.conf配置参数client-output-buffer-limit,该参数的意义是
client-output-buffer-limit pubsub 32mb 8mb 60
5.punsubscribe 取消模式匹配的订阅
redis客户端工具同样不能操作。
6.pubsub 自省命令
pubsub是一种可以检查发布订阅子系统的自省命令。其子命令以及时间复杂度如下:
CHANNELS :O(N) , N 是活跃频道的数量,该命令返回活跃的频道列表。活跃指的是至少被一个订阅者订阅。
由于我已经取消了所有测试订阅,只有之前误操作ctrl+z的订阅者没有取消,所以有一下的结果,message_1频道有2个订阅者没有取消,new_1频道都正确取消了订阅。
127.0.0.1:6379> pubsub channels message_11) "message_1"127.0.0.1:6379> pubsub channels new_1(empty list or set)
NUMSUB :O(N),N是请求统计订阅数数目的频道的数量,下面语句的时间复杂度为O(2)。该语句只能统计非模式匹配类型的订阅者,如果语句中的订阅者包括*,则统计的结果为0,想要统计模式匹配的订阅者,需要使用NUMPAT子命令。
127.0.0.1:6379> pubsub numsub new_1 message_11) "new_1"2) "0"3) "message_1"4) "2"127.0.0.1:6379> pubsub numsub new_1 message_*1) "new_1"2) "0"3) "message_*"4) "0"
NUMPAT :O(1),统计模式所有匹配订阅者的数量。该命令无需频道或者模式匹配参数。返回所有订阅者的数量。
127.0.0.1:6379> pubsub numpat(integer) 2
- Redis的发布订阅的使用方法
- Redis的发布订阅
- Redis的发布订阅
- Redis的发布订阅
- Redis的发布订阅
- redis的发布订阅
- Redis发布订阅使用方法
- Redis 的订阅和发布
- Redis的订阅发布机制
- Redis的订阅与发布
- redis的发布/订阅模式
- Redis的订阅发布机制
- 基于redis的发布订阅
- Redis消息的发布/订阅
- Redis 的发布与订阅
- Redis的发布/订阅(pub/sub)
- Redis的订阅和发布代码
- redis的发布和订阅功能
- Ubuntu 更换阿里云软件源
- jsp页面使用jstl获取当前时间
- firewall-cmd
- 大数据之Linux02
- 进程和线程的区别
- Redis的发布订阅的使用方法
- 美团点评面试题
- c++中箭头操作符(->)和点操作符(.)有什么不同
- USACO-2017-FEB-金组 Why Did the Cow Cross the Road II
- Stars POJ 2352(简单树状数组)
- 使用管道流和线程实现:控制台不断输入,并输出到文件中
- Sqlmap扩展—外部IP代理池实现
- 区间交(树状数组+二分)hdu5700
- Linux的一些基本操作以及搭建Redis集群时的一些配置和踩过的坑