redis发布订阅
# redis发布订阅
https://www.cnblogs.com/pyyu/p/10013703.html (opens new window)
发布publish,订阅subscribe
Redis 通过 PUBLISH 、 SUBSCRIBE 等命令实现了订阅与发布模式。
# 发布订阅的命令
PUBLISH channel msg
# 将信息 message 发送到指定的频道 channel
publish qq01 abc # 向频道qq01发送abc,频道有几个订阅就会返回对应的数量,没有就返回0
SUBSCRIBE channel [channel ...]
# 订阅频道,可以同时订阅多个频道
subscribe qq01 qq02 # 同时订阅qq01和qq02频道
UNSUBSCRIBE [channel ...]
# 取消订阅指定的频道, 如果不指定频道,则会取消订阅所有频道
unsubscribe qq01 # 取消订阅qq01这个频道
PSUBSCRIBE pattern [pattern ...]
# 订阅一个或多个符合给定模式的频道,每个模式以 * 作为匹配符,比如 it* 匹配所 有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有 以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类
psubscribe pattern* # 使用通配符订阅一个或者多个频道
PUNSUBSCRIBE [pattern [pattern ...]]
# 退订指定的规则, 如果没有参数则会退订所有规则
punsubscribe qq01 # 退订指定的规则
PUBSUB subcommand [argument [argument ...]]
#查看订阅与发布系统状态
PUBSUB CHANNELS # 订阅的使用频道
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
注意:使用发布订阅模式实现的消息队列,当有客户端订阅channel后只能收到后续发布到该频道的消息,之前发送的不会缓存,必须Provider和Consumer同时在线。
# 发布订阅实验一
一个人有二个qq群(qq01,qq02),
1、官方向不同qq群发送不同的消息,qq01:aaaa qq02:bbbb
2、官方群发一个:都是SB
qq群:qq01 qq02
127.0.0.1:6379> subscribe qq01 qq02 # 订阅二个qq群
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "qq01"
3) (integer) 1
1) "subscribe"
2) "qq02"
3) (integer) 2
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 1、给qq01群发布消息
127.0.0.1:6379> publish qq01 aaaa
(integer) 1
# 接收
1) "message"
2) "qq01"
3) "aaaa"
# 2、给qq02群发布消息
127.0.0.1:6379> publish qq02 bbbb
(integer) 1
# 接收
1) "message"
2) "qq02"
3) "bbbb"
# 3、官方群发 qq01,qq02
# !publish只能一次一次的发,不能使用*号,单个PSUBSCRIBE wang*订阅多个可以
publish qq01 sb
publish qq02 sb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
编辑 (opens new window)