Redis學習總結之(五)釋出訂閱
阿新 • • 發佈:2018-12-10
一、釋出訂閱
釋出訂閱是訊息傳遞的一種方式,即釋出者釋出訊息,訂閱者獲取訊息,中間傳輸的是一種訊息,所以應該有四個必須的要素:釋出者、訂閱(接受)者、通道、訊息。在Redis裡,由於redis分客戶端和服務端,redis服務端提供服務,所以釋出者(publishser)和訂閱者(subscriber)都是客戶端,通道(channel)是服務端,只有subscirber訂閱了某個或某一型別的channel,才能消費publisher發往此channel的訊息,而且訊息是一次性實時消費,不會持久化到channel中,也就是redis是不會持久化訊息。如下圖所示:
二、命令
- 訂閱:subscribe
- 釋出: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"
三、參考文件