一个channel可以被多个客户端订阅,每个客户端都会收到新消息,一个客户端也可以订阅多个channel。

执行subscribe订阅channel,执行publish往channel发送数据。

1、subscribe:订阅一个或多个channel

语法:subscribe channel [channel . . .]

如subscribe ch1 ch2

相近命令:psubscribe、unsubscribe、punsubscribe

psubscribe:根据正则匹配订阅

语法:psubscribe pattern [pattern . . .]

如psubscribe ch*

unsubscribe:取消订阅

punsubscribe:根据正则匹配取消订阅

2、publish:往指定的channel发送数据

语法:publish channel message

如publish ch1 a

publish ch1 b

publish ch2 a

publish ch2 b

3、pubsub:

语法:pubsub subcommand [argument [argument . . .]]

subcommand有三个,channels、numsub、numpat。

1)pubsub channels:查看以subscribe方式订阅的channel

语法:pubsub channels [pattern]

如pubsub channels,查看以subscribe方式订阅的所有channel

如pubsub channels ch*,查看以subscribe方式订阅的、以"ch"开头的channel

2)pubsub numsub:查看指定的一个或多个channel,分别有多少个订阅者

语法:pubsub numsub channel [channel . . .]

如pubsub numsub ch1 ch2,查看ch1、ch2分别有多少个订阅者

3)pubsub numpat:查看以psubscribe方式订阅的数量

语法:pubsub numpat

如果在一个客户端执行psubscribe ch*,在另一个客户端执行psubscribe abs*,在当前客户端执行pubsub numpat,会返回2。

 

redis的发布订阅功能有一个致命缺点,那就是如果先publish,后subscribe,那么这期间的数据都丢了,而且channel数据不能持久化,一旦redis服务器宕机,未处理的数据都会丢。更常见的,假如客户端重启或者升级的话,在这个过程中publish的数据都会丢。如果数据很重要的话,就得用消息队列。

值得注意的是,用keys *命令是查看不了channel的。

相关文章:

  • 2021-07-23
  • 2021-08-09
  • 2022-03-07
猜你喜欢
  • 2022-03-06
  • 2022-12-23
  • 2022-01-06
  • 2021-07-06
  • 2018-08-08
  • 2018-08-18
  • 2021-04-14
相关资源
相似解决方案