欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis的发布与订阅

程序员文章站 2022-03-10 12:33:30
...

发布订阅(pub/sub)

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

发送者(发布者)并不是直接发送它们的消息给指定的接收者(订阅者),而是将消息发布到特定的消息通道,并且不需要知道订阅者的任何信息。订阅者可以订阅一个或多个感兴趣的消息通道,同时也只会收到他们感兴趣通道的信息,而不用去关心是谁发布的。这种发布者与订阅者的解耦,使其具备更强的扩展性并得到一个更加动态的网络拓扑。

订阅:客户端订阅喜欢的频道。

Redis的发布与订阅

发布:消息发送给指定的频道,由频道发送给订阅它的客户端。

Redis的发布与订阅

  • 订阅频道
subscribe channel [channel ...] 

示例:订阅a、b、c频道

subscribe a b c
  • 发布消息
publish channel message

示例:给a频道发送hello

publish a hello

Redis的发布与订阅

  • 查看现有多少频道
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>

观测变化:

Redis的发布与订阅

相关标签: redis