redis之釋出與訂閱(publish/subscribe模式)
阿新 • • 發佈:2019-01-03
釋出與訂閱(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發訊息
缺點
所有pub/sub很有用,但是redis的實現有這麼幾個問題:
1,如果一個客戶端訂閱了頻道,但自己讀取訊息的速度卻不夠快的話,那麼不斷積壓的訊息會使redis輸出緩衝區的體積變得越來越大,這可能使得redis本身的速度變慢,甚至直接崩潰。
2,這和資料傳輸可靠性有關,如果在訂閱方斷線,那麼他將會丟失所有在短線期間釋出者釋出的訊息,這個讓絕不多數人都很失望吧。