Redis Pub/Sub模式 - 發佈/訂閱模式

Redis 教程 | 菜鳥教程  
阿里雲視頻教程 

Redis 發佈訂閱(pub/sub)是一種消息通信模式:發送者(pub)發送消息,訂閱者(sub)接收消息。
Redis 客戶端可以訂閱任意數量的頻道。

訂閱者(subscriber):如客戶端
發佈者(publisher):如服務器
頻道(channel):頻道

通信模型
● RedisServer中可以創建若干channel
● 一個訂閱者可以訂閱多個channel
● 當發佈者向一個頻道中發佈一條消息時,所有的訂閱者都將會收到消息
● Redis的發佈訂閱模型沒有消息積壓功能,即新加入的訂閱者收不到發佈者之前發佈的消息
● 當訂閱者收到消息時,消息內容如下
   ● 第一行:固定內容message
   ● 第二行:channel的名稱
   ● 第三行:收到的新消息

發佈訂閱的 API

Publish:發佈消息
      PUBLISH channel message  將信息發送到指定的channel(頻道)
Subscribe:訂閱消息
      SUBSCRIBE channel [channel ...]  訂閱一個或多個頻道
UnSubscribe:取消訂閱消息
      UNSUBSCRIBE channel [channel ...] 取消訂閱一個或多個頻道

Redis 模式訂閱 PSUBSCRIBE/PUNSUBSCRIBE
● PSUBSCRIBE pattern [pattern ...]  訂閱一個或多個符合pattern給定模式的頻道
● PUNSUBSCRIBE pattern [pattern ...]  取消訂閱一個或多個頻道
● PUBSUB subcommand [argument [argument ...]]  查看訂閱與發佈系統狀態

支持的模式有:?,*,[abc],[^abc],[a-b]
● h?llo matches hello,hallo and hxllo                         匹配包含 h 與 llo 之間,有“一個”任意字符 的頻道
● h*llo matches hllo and heeeello                                匹配包含 h 與 llo 之間,有任意“多個”字符 的頻道
● h[ae]llo matches hello and hallo,but not hillo         匹配包含 h 與 llo 之間,是a 或者 e 的頻道
● h[^e]llo matches hallo,hbllo,... but not hello         匹配包含 h 與 llo 之間,有一個字母並且不能是 e 的頻道
● h[a-b]llo matches hallo and hbllo                              匹配包含 h 與 llo 之間,a 到 b 之間的頻道

查詢訂閱狀態
PUBSUB CHANNELS [pattern]:返回符合模式(未指定情況下返回所有)的頻道
PUBSUB NUMSUB [channel - 1 ... channel - N]:返回指定的頻道的訂閱數
PUBSUB NUMPAT:返回所有服務器中被訂閱的模式數目
*
*
*
*

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章