Redis教程 - Pub/Sub(發(fā)布/訂閱)

Redis提供了 基于 “發(fā)布/訂閱”模式的消息機制馋吗,此種模式下朴上,消息發(fā)布者和訂閱者不進行直接通信,發(fā)布者客戶端向指定的頻道(Channel)發(fā)布消息蔑赘,該頻道的每個客戶端都可以收到該消息式矫,如圖3-16所示乡摹。Redis提供了若干命令支持該功能,在實際應用開發(fā)時衷佃,能夠為此類問題提供實現(xiàn)方法趟卸。

pub-sub.png

命令

Redis主要提供了 發(fā)布消息、訂閱頻道氏义、取消訂閱以及 按照模式訂閱和取消訂閱等命令锄列。

1.發(fā)布消息

命令格式如下:

publish channel message

例如,向channel:sports 頻道發(fā)布一條消息"Tom won the champion"惯悠,返回的結果為訂閱者個數(shù)邻邮。

publish channel:sports "Tom won the champion"

2.訂閱消息

命令格式如下:

subscribe channel [channel ...]

訂閱者可以訂閱一個或多個頻道,下面操作為當前客戶端訂閱了 channel:sports 頻道:

subscribe channel:sports

注意:新開啟的訂閱客戶端克婶,無法收到該頻道之前的消息筒严,因為Redis不會對發(fā)布的消息進行持久化丹泉。

和許多專業(yè)的消息隊列相比(例如Kafka、RocketMQ)相比鸭蛙,Redis的發(fā)布-訂閱略顯粗糙摹恨,例如無法實現(xiàn)消息堆積和回溯。

3.取消訂閱

命令格式如下:

unsubscribe channel [channel ...]

客戶端可以通過unsubscribe 命令取消對指定頻道的訂閱娶视,取消成功后不會再收到該頻道的發(fā)布消息:

unsubscribe  channel:sports

4.按照模式訂閱和取消訂閱

命令格式:

psubscribe  pattern 
punsubscribe  pattern 

除了subscribe和unsubscribe 命令晒哄,Redis還支持glob風格的訂閱命令psubscribe 和取消訂閱命令punsubscribe ,例如下面操作訂閱 以 it開頭的所有頻道:

psubscribe  it*

5.查詢訂閱

1肪获、查看活躍的頻道

pubsub channels [pattern ]

所謂活躍的頻道是指當前頻道至少有一個訂閱者寝凌,如下:

pubsub channels

指定pattern :

pubsub channels channel:*r*

2、查看訂閱頻道數(shù)

pubsub numsub [channel ...]

3孝赫、查看訂閱模式

pubsub numpat

Jedis Publish/Subscribe

添加maven依賴:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

Jedis訂閱 channel:sports頻道较木,代碼如下:

class MyListener extends JedisPubSub {
        public void onMessage(String channel, String message) {
        }

        public void onSubscribe(String channel, int subscribedChannels) {
        }

        public void onUnsubscribe(String channel, int subscribedChannels) {
        }

        public void onPSubscribe(String pattern, int subscribedChannels) {
        }

        public void onPUnsubscribe(String pattern, int subscribedChannels) {
        }

        public void onPMessage(String pattern, String channel,
            String message) {
        }
}

MyListener l = new MyListener();

jedis.subscribe(l, "channel:sports");

參考資料

https://github.com/xetorthio/jedis/wiki/AdvancedUsage

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市青柄,隨后出現(xiàn)的幾起案子伐债,更是在濱河造成了極大的恐慌,老刑警劉巖致开,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泳赋,死亡現(xiàn)場離奇詭異,居然都是意外死亡喇喉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進店門校坑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拣技,“玉大人,你說我怎么就攤上這事耍目「嘟铮” “怎么了?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵邪驮,是天一觀的道長莫辨。 經(jīng)常有香客問我,道長毅访,這世上最難降的妖魔是什么沮榜? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮喻粹,結果婚禮上蟆融,老公的妹妹穿的比我還像新娘。我一直安慰自己守呜,他們只是感情好型酥,可當我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布山憨。 她就那樣靜靜地躺著,像睡著了一般弥喉。 火紅的嫁衣襯著肌膚如雪郁竟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天由境,我揣著相機與錄音棚亩,去河邊找鬼。 笑死藻肄,一個胖子當著我的面吹牛蔑舞,可吹牛的內容都是我干的。 我是一名探鬼主播嘹屯,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼攻询,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了州弟?” 一聲冷哼從身側響起钧栖,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎婆翔,沒想到半個月后拯杠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡啃奴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年潭陪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片最蕾。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡依溯,死狀恐怖,靈堂內的尸體忽然破棺而出瘟则,到底是詐尸還是另有隱情黎炉,我是刑警寧澤,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布醋拧,位于F島的核電站慷嗜,受9級特大地震影響,放射性物質發(fā)生泄漏丹壕。R本人自食惡果不足惜庆械,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雀费。 院中可真熱鬧干奢,春花似錦、人聲如沸盏袄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至逛尚,卻和暖如春垄惧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绰寞。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工到逊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滤钱。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓觉壶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親件缸。 傳聞我的和親對象是個殘疾皇子铜靶,可洞房花燭夜當晚...
    茶點故事閱讀 45,995評論 2 361

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)他炊,斷路器争剿,智...
    卡卡羅2017閱讀 134,722評論 18 139
  • 安全性 設置客戶端連接后進行任何其他指令前需要使用的密碼。 警告:因為redis 速度相當快痊末,所以在一臺比較好的服...
    OzanShareing閱讀 1,792評論 1 7
  • redis-訂閱與發(fā)布 Redis 通過 PUBLISH 蚕苇、 SUBSCRIBE 等命令實現(xiàn)了訂閱與發(fā)布模式, 這...
    全能程序猿閱讀 5,853評論 0 4
  • 1.1 資料 凿叠,最好的入門小冊子涩笤,可以先于一切文檔之前看,免費盒件。 作者Antirez的博客辆它,Antirez維護的R...
    JefferyLcm閱讀 17,071評論 1 51
  • 現(xiàn)在的文字就如同快餐!看一遍就懂了履恩,不需要你回味!你若想回味也沒有味呢蔫,如嚼蠟切心!吃在口里,滿嘴是蠟片吊,自己原來...
    北斗星影教育文老師閱讀 199評論 0 0