什么是发布订阅
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。
角色
- 发布者(publisher)
- 订阅者(subscriber)
- 频道 (channel)
订阅一个频道
订阅多个频道
常用命令
publish channel message
- 发布命令
subscribe [channel ...]
- 订阅一个或多个频道
unsubscribe [channel ...]
- 取消订阅一个或多个频道
示例
- 订阅者1客户端 (订阅channel:1频道)
127.0.0.1:6379> subscribe channel:1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
- 订阅者2客户端 (订阅 channel:1 和 channel:2 两个频道)
127.0.0.1:6379> subscribe channel:1 channel:2
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "subscribe"
2) "channel:2"
3) (integer) 2
- 发布者客户端 - 向 channel:1 频道发布内容
127.0.0.1:6379> publish channel:1 hello
(integer) 2 # 订阅者个数,说明有两个订阅者订阅该频道。
- 订阅者1客户端 - 收到发布内容
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "message"
2) "channel:1"
3) "hello"
- 订阅者2客户端 - 收到发布内容
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "subscribe"
2) "channel:2"
3) (integer) 2
1) "message"
2) "channel:1"
3) "hello"
- 发布者客户端 - 向 channel:2 频道发布内容
127.0.0.1:6379> publish channel:2 world
(integer) 1 # 订阅者个数,说明有1个订阅者订阅该频道。
- 订阅者1客户端 - 未收到发布内容
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "message"
2) "channel:1"
3) "hello"
- 订阅者2客户端 - 收到发布内容
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "subscribe"
2) "channel:2"
3) (integer) 2
1) "message"
2) "channel:1"
3) "hello"
1) "message"
2) "channel:2"
3) "world"
其他API
1. psubscribe [pattern...]
- 订阅正则表达式匹配的频道
2. punsubscribe [pattern...]
- 退订正则表达式匹配的频道
3.pubsub channels
- 列出至少有一个订阅者的频道
4.pubsub numsub [channel...]
- 列出给定频道的订阅者数量
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。