Redis(設計與實現):---釋出與訂閱介紹

你走吧起風了__發表於2020-11-05

一、頻道訂閱(SUBSCRIBE、PUBLISH)

  • 通過執行SUBSCRIBE命令,客戶端可以訂閱一個或多個頻道,從而成為這些頻道的(subscriber)訂閱者 :每當有其他客戶端使用PUBLISH命令向被訂閱的頻道傳送訊息(message)時,頻道的所有訂閱者都會收到這條訊息

演示案例

  • 假設A、B、C三個客戶端都執行了命令,那麼這三個客戶端就是"news.it"頻道的訂閱者,如下圖所示:

c SUBSCRIBE "news.it"
在這裡插入圖片描述

  • 如果這時某個客戶端執行下面命令,向"news.it"頻道傳送訊息"hello",那麼"news.it"的三個訂閱者都將收到這條訊息,如下圖所示:

二、模式訂閱(PSUBSCRIBE)

客戶端還可以通過執行PSUBSCRIBE命令訂閱一個或多個模式,從 而成為這些模式的訂閱者:每當有其他客戶端向某個頻道傳送訊息時,訊息不僅會被髮送給 這個頻道的所有訂閱者,它還會被髮送給所有與這個頻道相匹配的模式的訂閱者

演示案例 舉個例子,假設如下圖所示:

  • 客戶端A正在訂閱頻道"news.it"。
  • 客戶端B正在訂閱頻道"news.et"
  • 客戶端C和客戶端D正在訂閱與"news.it"頻道和"news.et"頻道相匹配的模式"news.[ie]t" 在這裡插入圖片描述
  • 如果這時某個客戶端執行PUBLISH命令,向"news.it"頻道傳送訊息"hello",那麼不僅正在訂閱"news.it"頻道的客戶端A會收到消
    息,客戶端C和客戶端D也同樣會收到訊息,因為這兩個客戶端正在訂閱匹配"news.it"頻道 的"news.[ie]t"模式,如下圖所示:

c PUBLISH "news.it" "hello"
在這裡插入圖片描述
與此類似,如果某個客戶端執行下面的命令,向"news.et"頻道傳送訊息"world",那麼不僅正在訂閱"news.et"頻道的客戶端B會收到消
息,客戶端C和客戶端D也同樣會收到訊息,因為這兩個客戶端正在訂閱匹配"news.et"頻道 的"news.[ie]t"模式,如下圖所示:

c PUBLISH "news.et" "world"
在這裡插入圖片描述

相關文章