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 例項 以下例...