Redis學習筆記 - 發佈訂閱

什麼是發佈訂閱

Redis 發佈訂閱(pub/sub)是一種消息通訊模式:發送者(pub)發送消息,訂閱者(sub)接收消息。正則表達式

Redis 客戶端能夠訂閱任意數量的頻道。ui

角色

  • 發佈者(publisher)
  • 訂閱者(subscriber)
  • 頻道 (channel)

訂閱一個頻道

圖片描述

訂閱多個頻道

圖片描述

經常使用命令

publish channel message

  • 發佈命令

subscribe [channel ...]

  • 訂閱一個或多個頻道

unsubscribe [channel ...]

  • 取消訂閱一個或多個頻道

示例

  • 訂閱者1客戶端 (訂閱channel:1頻道)
127.0.0.1:6379> subscribe channel:1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
  • 訂閱者2客戶端 (訂閱 channel:1 和 channel:2 兩個頻道)
127.0.0.1:6379> subscribe channel:1 channel:2
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "subscribe"
2) "channel:2"
3) (integer) 2

  • 發佈者客戶端 - 向 channel:1 頻道發佈內容
127.0.0.1:6379> publish channel:1 hello
(integer) 2 # 訂閱者個數,說明有兩個訂閱者訂閱該頻道。
  • 訂閱者1客戶端 - 收到發佈內容
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "message"
2) "channel:1"
3) "hello"
  • 訂閱者2客戶端 - 收到發佈內容
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "subscribe"
2) "channel:2"
3) (integer) 2
1) "message"
2) "channel:1"
3) "hello"

  • 發佈者客戶端 - 向 channel:2 頻道發佈內容
127.0.0.1:6379> publish channel:2 world
(integer) 1 # 訂閱者個數,說明有1個訂閱者訂閱該頻道。
  • 訂閱者1客戶端 - 未收到發佈內容
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "message"
2) "channel:1"
3) "hello"
  • 訂閱者2客戶端 - 收到發佈內容
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1
1) "subscribe"
2) "channel:2"
3) (integer) 2
1) "message"
2) "channel:1"
3) "hello"
1) "message"
2) "channel:2"
3) "world"

其餘API

1. psubscribe [pattern...]

  • 訂閱正則表達式匹配的頻道

2. punsubscribe [pattern...]

  • 退訂正則表達式匹配的頻道

3.pubsub channels

  • 列出至少有一個訂閱者的頻道

4.pubsub numsub [channel...]

  • 列出給定頻道的訂閱者數量
相關文章
相關標籤/搜索