Redis實(shí)現(xiàn)消息隊(duì)列

本文講述的是如何用redis實(shí)現(xiàn)消息隊(duì)列的2中模式。


包含以下內(nèi)容:

  1. 生產(chǎn)/消費(fèi)模式
  2. 發(fā)布/訂閱模式

一、生產(chǎn)/消費(fèi)模式

所謂生產(chǎn)/消費(fèi)即一個消息只能被一個消費(fèi)者接收。

lpush:將一個或多個值 value 插入到列表 key 的表頭
rpop:移除并返回列表 key 的尾元素。
brpop:它是 RPOP 命令的阻塞版本,當(dāng)給定列表內(nèi)沒有任何元素可供彈出的時候,連接將被 BRPOP 命令阻塞,直到等待超時或發(fā)現(xiàn)可彈出元素為止。

參考:http://redisdoc.com/

使用lpush向隊(duì)列里表頭添加消息,使用brpop向隊(duì)列里表尾阻塞取消息,沒有消息就等待。

可以看到使用brpop queue 0來監(jiān)聽名為queue的隊(duì)列來取值,如果沒有值就等待,如果有值就取出值來,使用lpush queue "Message 01" 來往消息隊(duì)列里增加消息。

二、發(fā)布/訂閱模式

所謂發(fā)布/訂閱即一個消息可以被多個訂閱者同時接收

publish:將信息 message 發(fā)送到指定的頻道 channel
subscibe:訂閱給定的一個或多個頻道的信息

參考:http://redisdoc.com/

可以看到使用publish向名為channel里發(fā)布了3個消息,然后3個訂閱者同時收到這3個消息。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容