Redis的发布与订阅
程序员文章站
2022-03-10 12:33:30
...
发布订阅(pub/sub)
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
发送者(发布者)并不是直接发送它们的消息给指定的接收者(订阅者),而是将消息发布到特定的消息通道,并且不需要知道订阅者的任何信息。订阅者可以订阅一个或多个感兴趣的消息通道,同时也只会收到他们感兴趣通道的信息,而不用去关心是谁发布的。这种发布者与订阅者的解耦,使其具备更强的扩展性并得到一个更加动态的网络拓扑。
订阅:客户端订阅喜欢的频道。
发布:消息发送给指定的频道,由频道发送给订阅它的客户端。
- 订阅频道
subscribe channel [channel ...]
示例:订阅a、b、c频道
subscribe a b c
- 发布消息
publish channel message
示例:给a频道发送hello
publish a hello
- 查看现有多少频道
127.0.0.1:6379> pubsub channels
1) "a"
2) "e"
3) "c"
4) "b"
127.0.0.1:6379>
- 退订给定的频道
unsubscribe channel [channel ...]
示例:退订a频道
unsubscribe a
注意:由于redis客户端订阅操作会占用当前客户端窗口,因此执行不了任何redis命令,退订频道命令一般用于程序客户端操作使用(如Java客户端、C客户端、PHP客户端等)
- 订阅多个符合条件的频道
psubscribe parent [parent ...]
示例:订阅所有以a开头的频道
psubscribe *a
- 退订多个符合条件的频道
punsubscribe parent [parent ...]
示例:退订以a开头的所有频道
punsubscribe *a
案例:
client1:
127.0.0.1:6379> subscribe abc ace dev
client2:
127.0.0.1:6379> psubscribe a*
client3:
127.0.0.1:6379> publish abc "abc say hello"
(integer) 2
127.0.0.1:6379> publish ace "ace say hello"
(integer) 2
127.0.0.1:6379> publish dev "dev say hello"
(integer) 1
127.0.0.1:6379>
观测变化: