本文講述的是如何用redis實(shí)現(xiàn)消息隊(duì)列的2中模式。
包含以下內(nèi)容:
- 生產(chǎn)/消費(fèi)模式
- 發(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)可彈出元素為止。
使用lpush向隊(duì)列里表頭添加消息,使用brpop向隊(duì)列里表尾阻塞取消息,沒有消息就等待。

可以看到使用brpop queue 0來監(jiān)聽名為queue的隊(duì)列來取值,如果沒有值就等待,如果有值就取出值來,使用lpush queue "Message 01" 來往消息隊(duì)列里增加消息。
二、發(fā)布/訂閱模式
所謂發(fā)布/訂閱即一個消息可以被多個訂閱者同時接收
publish:將信息 message 發(fā)送到指定的頻道 channel
subscibe:訂閱給定的一個或多個頻道的信息

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