持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情
Redis的发布订阅功能详解
Redis大部分的朋友都用得很多了,但是平时在这过程中有没有需要用到Redis的发布订阅的场景呢?
今天咱们就一起来学习一下,Redis中发布订阅的功能到底是怎样的。
话不多说,咱们马上开始!
什么是发布订阅?
发布订阅,顾名思义就是会有两方,一个发布方是发送消息的,而另外一方是订阅方,订阅消息的。(注意这里的两方并不是只只有两个redis)
可以结合一个生活场景来理解:订报纸。
只要订阅了报纸,就会有人送报纸过来;有人送报纸过来,自然而然的就能收到的了。
发布功能
Redis中有专门的命令来实现消息的发布,具体命令:
PUBLISH channel1 "this is a publish message!"
上述命令的意思是:当前Redis向通道 channel1 发布了一条消息,消息内容是:"this is a publish message!"。
订阅功能
和redis的发布功能类似,Redis中的订阅功能也是有专门的命令来实现的,具体命令如下:
redis 127.0.0.1:6379> SUBSCRIBE channel1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel1"
3) (integer) 1
上述命令的意思是:当前Redis订阅(监听)通道channel1,希望收到通道channel1中的消息。
在这时候,如果有其他redis往channel1的通道中发布消息的话,当前redis就可以收到该消息,并在控制台上显示出来。
注意:
订阅方的Redis要收到消息有两个前提的:
- 发布方和订阅方的redis需要对同一个通道进行操作;如果发布方发布的通道和订阅方订阅的通道不同,则订阅方无法收到消息
- 订阅方需要比发布方提前监听通道,即订阅通道;因为订阅方是没有办法从通道中获取历史数据的,所以如何订阅方不是比发布方提前的话,它将无法收到发布方的消息。