1. 程式人生 > >redis之釋出與訂閱(publish/subscribe模式)

redis之釋出與訂閱(publish/subscribe模式)

釋出與訂閱(publish/subscribe)模式,簡稱為pub/sub模式,redis也實現了這種模式。

redis提供的釋出訂閱命令

命令 用例和描述
subscribe subscribe channel [channel …] 訂閱一個或多個頻道
unsubscribe unsubscribe [channel [channel …]] 退訂頻道,如果沒有指定頻道,則退訂所有的頻道
publish publish channel message 給指定的頻道發訊息
psubscribe psubscribe pattern [pattern …] 訂閱給定模式相匹配的所有頻道
punsubscribe punsubscribe [pattern [pattern …]] 退訂給定的模式,如果沒有指定模式,則退訂所有模式

例項

一個客戶端訂閱test-channel
一個客戶端訂閱test-channel
一個客戶端向test-channel發訊息
一個客戶端向test-channel發訊息

缺點

所有pub/sub很有用,但是redis的實現有這麼幾個問題:
1,如果一個客戶端訂閱了頻道,但自己讀取訊息的速度卻不夠快的話,那麼不斷積壓的訊息會使redis輸出緩衝區的體積變得越來越大,這可能使得redis本身的速度變慢,甚至直接崩潰。
2,這和資料傳輸可靠性有關,如果在訂閱方斷線,那麼他將會丟失所有在短線期間釋出者釋出的訊息,這個讓絕不多數人都很失望吧。