redis订阅发布
redis发布订阅原理
redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。就如同微信,微博的关注系统那样。redis客户端可以订阅任意数量的频道。
订阅/发布消息图:
如果有三个客户端,分别是:client1,client2,client5,订阅的频道为channel1,那么它们的关系如下:
当有新的消息通过PUBLISH命令发送给频道channel1时,这个消息就会被发送给订阅它的三个客户端:
redis发布订阅命令
这些命令被广泛用于构建即时通信应用,比如网络聊天室(chatroom)和实时广播,实时提醒等
测试
- 订阅端
127.0.0.1:6379> subscribe moon #订阅一个频道
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "moon"
3) (integer) 1 # 从这里网上均是默认打印信息,等待读取推送的信息
1) "message" # 消息标签
2) "moon" # 频道名称
3) "hello moon" #频道内容
- 发布端
127.0.0.1:6379> publish moon "hello moon" # 发布者发送消息到频道
(integer) 1
127.0.0.1:6379>
注意:先启动发布端进行发布,然后再启动订阅端订阅,这里并不会有数据产生,并且在订阅端直接ctrl+c退出,会直接退出整个redis-cli客户端
-
发布端
-
订阅端
原理
使用场景
- 实时消息系统
- 实时聊天(频道当作聊天室,将消息回显给所有人即可)
- 订阅,关注系统
稍微复杂的场景,就是用消息队列去做了