述
前面,都是说了一些基础数据类型的一些常用的命令,本文来看一下redis中的发布与订阅
发布订阅
reids中的发布与订阅类似于生活中的电台, 电台可以在某一个频率上发广播,而我们可以接收任何一个频率的广播
下面来看一下具体是如何使用的, 首先需要打开一个redis-cli,然后连接我们的redis服务.
订阅消息的方式如下:1
2
3
4
5
6
7
8
9
10
11172.16.12.3:6379> subscribe c1 c2 c3
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "c1"
3) (integer) 1
1) "subscribe"
2) "c2"
3) (integer) 2
1) "subscribe"
2) "c3"
3) (integer) 3
意思就是接收 c1 c2 c3 这三个频道的消息, 然后我们怎么在这些频道发送消息呢?
再打开一个redis-cli,然后连接redis服务,用来发送消息,如下:
1 | 172.16.12.3:6379> publish c1 "hello redis" |
这样就是往c1这个通道里面push了一条消息,这时候,订阅方就可以收到了,会有如下输出:1
2
3
4
5
6
7
8
9
10
11
12
13Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "c1"
3) (integer) 1
1) "subscribe"
2) "c2"
3) (integer) 2
1) "subscribe"
2) "c3"
3) (integer) 3
1) "message"
2) "c1"
3) "hello redis"
也可以使用模式匹配订阅,比如下面的命令:1
2
3
4
5172.16.12.3:6379> psubscribe c*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "c*"
3) (integer) 1
c*
, 就表示所有c开头的通道,然后在消息发送方发几条消息试试,如下:1
2
3
4172.16.12.3:6379> publish c1 "hello redis from c1"
(integer) 1
172.16.12.3:6379> publish c2 "hello redis from c2"
(integer) 1
发完之后,订阅放的输出如下:1
2
3
4
5
6
7
8
9
10
11
12
13172.16.12.3:6379> psubscribe c*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "c*"
3) (integer) 1
1) "pmessage"
2) "c*"
3) "c1"
4) "hello redis from c1"
1) "pmessage"
2) "c*"
3) "c2"
4) "hello redis from c2"
总结
发布订阅功能就跟消息队列其实差不多,在某些场景下还是很好用的, 但是同时也需要注意一些问题
由于网络在传输过程中可能会遭遇断线等意外情况,断线后需要进行重连,然而这会导致断线期间的数据丢失.