Redis 命令(八) 之 Redis 發布訂閱

2021-10-01 03:33:03 字數 1498 閱讀 1217

redis 發布訂閱(pub/sub)是一種訊息通訊模式:發送者(pub)傳送訊息,訂閱者(sub)接收訊息。

redis 客戶端可以訂閱任意數量的頻道。

下圖展示了頻道 channel1 , 以及訂閱這個頻道的三個客戶端 —— client2 、 client5 和 client1 之間的關係:

當有新訊息通過 publish 命令傳送給頻道 channel1 時, 這個訊息就會被傳送給訂閱它的三個客戶端:

例項

以下例項演示了發布訂閱是如何工作的。在我們例項中我們建立了訂閱頻道名為 redischat:

redis 127.0.0.1:6379> subscribe redischat

reading messages...

(press ctrl-c to quit)

1)"subscribe"

2)"redischat"

3)(integer) 1

現在,我們先重新開啟個 redis 客戶端,然後在同乙個頻道 redischat 發布兩次訊息,訂閱者就能接收到訊息。

redis 127.0.0.1:6379> publish redischat "redis is a great caching technique"

(integer) 1

redis 127.0.0.1:6379> publish redischat "learn redis by swpu"

(integer) 1

# 訂閱者的客戶端會顯示如下訊息

1)"message"

2)"redischat"

3)"redis is a great caching technique"

1)"message"

2)"redischat"

3)"learn redis by swpu"

下表列出了 redis 發布訂閱常用命令:

序號命令及描述

1psubscribe pattern [pattern …] 訂閱乙個或多個符合給定模式的頻道

2pubsub subcommand [argument [argument …]] 檢視訂閱與發布系統狀態

3publish channel message 將資訊傳送到指定的頻道

4punsubscribe [pattern [pattern …]] 退訂所有給定模式的頻道

5subscribe channel [channel …] 訂閱給定的乙個或多個頻道的資訊

6unsubscribe [channel [channel …]] 指退訂給定的頻道

redis發發發發

涉及搶購 秒殺 搶票等活動時,為了避免超賣,那麼庫存數量是有限的,但是如果同時下單人數超過了庫存數量,就會導致商品超賣問題。那麼我們怎麼來解決這個問題呢,我的思路如下 偽 sql1 查詢商品庫存 if 庫存數量 0 當沒有併發時,上面的流程看起來是再正常不過了,假設同時兩個人下單,而庫存只有1個了,...

redis實戰 Redis命令之集合

redis的集合以無序的方式儲存多個各不相同的元素,使用者可以快速對集合執行新增元素 移除元素以及檢查元素是否存在於集合中的操作。命令用例 描述注意 sadd sadd key item item 將乙個或多個元素插入到集合中,並返回被新增元素當中原本不存在於集合中的數量 srem srem key...

Redis 命令(十) 之 Redis 指令碼

redis 指令碼使用 lua 直譯器來執行指令碼。redis 2.6 版本通過內嵌支援 lua 環境。執行指令碼的常用命令為 eval。語法 eval 命令的基本語法如下 redis 127.0.0.1 6379 eval script numkeys key key arg arg 例項 以下例...