Redis的消息通知可以使用List類型的LPUSH和RPOP(左進右出),
當然更方便的是直接使用Redis的Pub/Sub(發布/訂閱)模式。
1.使用List實現隊列
使用列表類型的LPUSH和RPOP命令(或者RPUSH和LPOP命令,右進左出),
可以很方便的實現一個任務隊列,但是需要設置定時去查詢隊列,
並且可以使用對應的阻塞命令,如LPUSH和BRPOP命令,可以實現后台接收消息的推送。
2.Pub/Sub 發布訂閱模式
Redis支持發布/訂閱的模式,"發布/訂閱"模式中包含兩種角色,分別是發布者和訂閱者。
訂閱者可以訂閱一個或若干個頻道(channel),發布者可以向指定的頻道發送消息,所有訂閱此頻道的訂閱者都會收到此消息。
但是需要注意一下,使用發布訂閱模式實現的消息隊列,當有客戶端訂閱channel后只能收到后續發布到該頻道的消息,之前發送的不會緩存,必須Provider和Consumer同時在線。
命令參數
PUBLISH channel msg
將信息 message 發送到指定的頻道 channel
SUBSCRIBE channel [channel ...]
訂閱頻道,可以同時訂閱多個頻道
UNSUBSCRIBE [channel ...]
取消訂閱指定的頻道, 如果不指定頻道,則會取消訂閱所有頻道
PSUBSCRIBE pattern [pattern ...]
訂閱一個或多個符合給定模式的頻道,每個模式以 * 作為匹配符,比如 it* 匹配所有以 it 開頭的頻道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有以 news. 開頭的頻道( news.it 、 news.global.today 等等),諸如此類
PUNSUBSCRIBE [pattern [pattern ...]]
退訂指定的規則, 如果沒有參數則會退訂所有規則
PUBSUB subcommand [argument [argument ...]]
查看訂閱與發布系統狀態