视频教程

大家好,我录制的视频《Java之优雅编程之道》已经在CSDN学院发布了,有兴趣的同学可以购买观看,相信大家一定会收获到很多知识的。谢谢大家的支持……

视频地址:

提出问题

Redis如何用命令实现订阅发布

解决问题

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

命令:

SUBSCRIBE channel [channel ...] 
订阅给定的一个或多个频道的信息。

PUBLISH channel message 
将信息发送到指定的频道。

redis 发布订阅的信息怎么看 redis 发布订阅实际案例_客户端

接下来就用命令实现上图:

例一:
打开redis-cli 客户端(client1),查看当前所有key,只有一个ay_test
订阅key为ay_test的这个channel,如下:

redis 发布订阅的信息怎么看 redis 发布订阅实际案例_Redis_02

打开另一个redis-cli(client2) 客户端同样订阅key为ay_test的这个channel,如下:

redis 发布订阅的信息怎么看 redis 发布订阅实际案例_客户端_03

再打开另一个redis-cli 客户端(client3),发布信息,如下:

redis 发布订阅的信息怎么看 redis 发布订阅实际案例_redis_04

client1和client2收到的信息如下:

redis 发布订阅的信息怎么看 redis 发布订阅实际案例_Redis_05

例二:按照规则订阅 可以使用PSUBSCRIBE命令订阅指定的规则

如下:
客户端client1订阅ay_test*这个channel:

127.0.0.1:6379> psubscribe ay_test*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "ay_test*"
3) (integer) 1
1) "pmessage"
2) "ay_test*"
3) "ay_test1"
4) "i am ay_test1"
1) "pmessage"
2) "ay_test*"
3) "ay_test10"
4) "i am ay_test1"

客户端client2发布信息:

127.0.0.1:6379> publish ay_test1 "i am ay_test1"
(integer) 1
127.0.0.1:6379> publish ay_test10 "i am ay_test1"
(integer) 1
127.0.0.1:6379>

只要是符合ay_test*这种格式,client1都可以收到。