在redis中,客户端可以通过订阅特定的channel来接收该channel的消息,这些客户端称为该channel的subscriber

一个channel可以有多个subscriber,一个subscriber可以订阅多个不同的channel

将消息发送给channel的客户端,被称为publisher

客户端除了订阅频道之外,还可以订阅模式(pattern,例如news.*这样的正则表达式pattern)来接收信息:每当publisher想某个频道发送消息时,不仅频道的subscriber会收到消息,与频道匹配的所有模式的subscriber也会收到消息。

举例说明:

  • 现有:<channel "news.it"><channel "news.sport"><pattern "new.*">
  • 那么订阅<pattern "new.*">的 subscriber 将同时收到<channel "news.it">, <channel "news.sport">的信息

16.1 PUBLISH:向频道发送消息

1
PUBLISH channel message 

返回值是接收到的客户端数量

16.2 SUBSCRIBE:订阅频道

1
SUBSCRIBE channel [channel ...]
  • 每订阅成功一个频道,都会返回当前客户端已经订阅的频道数量
  • 订阅成功后,就可以接收到频道的消息,消息格式由三部分组成:
    • 第一部分,内容为message的字符串
    • 第二部分,频道名称
    • 第三部分,消息内容

16.3 UNSUBSCRIBE:退订频道

1
UNSUBSCRIBE channel [channel ...]
  • 若没有指定channel,那么将退订所有channel
  • 返回值:unsubscribe ChannelName SubscriberCntNow

16.4 PSUBSCRIBE:订阅模式

1
psubscribe pattern [pattern ...]
  • pattern是一个正则表达式,例如new.*
  • 返回值:psubscribe pattern 当前客户端订阅的pattern数量
  • 接收到的模式消息的格式:pmessage pattern channel message

16.5 PUNSUBSCRIBE:退订模式

1
punsubscribe pattern [pattern ...]

和unsubscribe类似

16.6 PUBSUB:查看发布与订阅相关的信息

  • 查看被订阅的频道 pubsub channels
  • 查看被订阅的模式 pubsub channels "new.*"
  • 查看频道的订阅者数量 pubsub numsub [channel ...]
  • 查看被订阅模式的总数量 pubsub numpat