1. 程式人生 > >Redis學習總結之(五)釋出訂閱

Redis學習總結之(五)釋出訂閱

一、釋出訂閱

釋出訂閱是訊息傳遞的一種方式,即釋出者釋出訊息,訂閱者獲取訊息,中間傳輸的是一種訊息,所以應該有四個必須的要素:釋出者、訂閱(接受)者、通道、訊息。在Redis裡,由於redis分客戶端和服務端,redis服務端提供服務,所以釋出者(publishser)和訂閱者(subscriber)都是客戶端,通道(channel)是服務端,只有subscirber訂閱了某個或某一型別的channel,才能消費publisher發往此channel的訊息,而且訊息是一次性實時消費,不會持久化到channel中,也就是redis是不會持久化訊息。如下圖所示:

二、命令

  • 訂閱:subscribe
       channel1  [channel2 ...]   :訂閱一個多個給定的通道。
  • 釋出:publish  channel1  message :將制定的資訊釋出到給定的通道中。
  • 系統狀態:pubsub subcommand  argument [argument ...] :檢視訂閱和釋出系統的狀態。
  • 退訂:unsubscribe   channel1  [channel2 ...]:退訂(取消)一個多個給定的通道。
  • 模式訂閱:psubscribe   pattern1  [pattern2 ...] :訂閱符合一個多個給定模式的通道。
  • 模式退訂:punsubscribe   pattern1  [pattern2 ...]
    :退訂符合一個多個給定模式的通道。

二、示列

  • 訂閱:在第一個客戶端 進行訂閱testChanel:
127.0.0.1:6379> publish testChanel helloword
(integer) 1
127.0.0.1:6379>
  •  釋出:在的第二個客戶端釋出訊息到testChanel,第一個客戶端就可要接收到訊息。
127.0.0.1:6379> publish testChannel helloword
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> subscribe testChannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "testChannel"
3) (integer) 1
1) "message"
2) "testChannel"
3) "helloword"
  •  模式訂閱:在第一個客戶端進行模式訂閱。
127.0.0.1:6379> subscribe test*
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "test*"
3) (integer) 1
  • 釋出到模式通道:
127.0.0.1:6379> publish test* helloword
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> subscribe test*
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "test*"
3) (integer) 1
1) "message"
2) "test*"
3) "helloword"

三、參考文件