站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        Redis學(xué)習(xí)筆記之發(fā)布訂閱

        本篇文章給大家?guī)?lái)了關(guān)于Redis的相關(guān)知識(shí),其中主要介紹了關(guān)于發(fā)布訂閱的相關(guān)問(wèn)題,Redis 發(fā)布訂閱(pub/sub)是一種消息通信模式:發(fā)送者(pub)發(fā)送消息,訂閱者(sub)接收消息,下面一起來(lái)看一下,希望對(duì)大家有幫助。

        Redis學(xué)習(xí)筆記之發(fā)布訂閱

        推薦學(xué)習(xí):Redis視頻教程

        Redis 發(fā)布訂閱(pub/sub)是一種消息通信模式:發(fā)送者(pub)發(fā)送消息,訂閱者(sub)接收消息。

        Redis 客戶端可以訂閱任意數(shù)量的頻道。

        訂閱/發(fā)布消息圖:

        第一個(gè)對(duì)象:消息發(fā)送者。第二個(gè)對(duì)象:頻道。第三個(gè)對(duì)象:消息訂閱者。

        Redis學(xué)習(xí)筆記之發(fā)布訂閱

        下圖展示了頻道 channel1 , 以及訂閱這個(gè)頻道的三個(gè)客戶端 —— client2 、 client5 和 client1 之間的關(guān)系:

        Redis學(xué)習(xí)筆記之發(fā)布訂閱

        當(dāng)有新消息通過(guò) PUBLISH 命令發(fā)送給頻道 channel1 時(shí), 這個(gè)消息就會(huì)被發(fā)送給訂閱它的三個(gè)客戶端:

        Redis學(xué)習(xí)筆記之發(fā)布訂閱

        命令 描述
        Publish channel message 命令 將信息發(fā)送到指定的頻道。
        SUBSCRIBE channel [channel …] 訂閱給定的一個(gè)或多個(gè)頻道的信息。
        UNSUBSCRIBE channel [channel …] 指退訂給定的頻道。
        [PUNSUBSCRIBE pattern [pattern …]] 退訂所有給定模式的頻道。
        [PUBSUB argument [argument …] 查看訂閱與發(fā)布系統(tǒng)狀態(tài)。
        PSUBSCRIBE pattern [pattern …] 訂閱一個(gè)或多個(gè)符合給定模式的頻道。

        測(cè)試

        訂閱端:

        127.0.0.1:6379> subscribe mianbao 			# 訂閱頻道 mianbao Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "mianbao" 3) (integer) 1 # 等待讀取推送的消息 1) "message"		# 消息 2) "mianbao"		# 頻道 3) "hello"			# 消息內(nèi)容 1) "message" 2) "mianbao" 3) "hello redis"

        發(fā)送端:

        127.0.0.1:6379> publish mianbao "hello"			# 發(fā)送消息到頻道		 (integer) 1 127.0.0.1:6379> publish mianbao "hello redis" (integer) 1

        原理:

        Redis是使用C實(shí)現(xiàn)的,通過(guò)分析Redis源碼里的pubsub.c文件,了解發(fā)布和訂閱機(jī)制的底層實(shí)現(xiàn),籍此加深對(duì) Redis的理解。

        Redis通過(guò)PUBLISH、SUBSCRIBE 和PSUBSCRIBE等命令實(shí)現(xiàn)發(fā)布和訂閱功能。

        通過(guò)SUBSCRIBE命令訂閱某頻道后,redis-server里維護(hù)了一個(gè)字典,字典的鍵就是一個(gè)個(gè)channel(頻道),而字典的值則是一個(gè)鏈表,鏈表中保存了所有訂閱這個(gè)channel的客戶端。SUBSCRIBE 命令的關(guān)鍵,就是將客戶端添加到給定 channel的訂閱鏈表中。

        通過(guò)PUBLISH命令向訂閱者發(fā)送消息,redis-server會(huì)使用給定的頻道作為鍵,在它所維護(hù)的channel字典中查找記錄了訂閱這個(gè)頻道的所有客戶端的鏈表,遍歷這個(gè)鏈表,將消息發(fā)布給所有訂閱者。

        Pub/Sub 從字面上理解就是發(fā)布 ( Publish )與訂閱(Subscribe ),在Redis中,你可以設(shè)定對(duì)某個(gè)key值進(jìn)行消息發(fā)布及消息訂閱,當(dāng)一個(gè)key值上進(jìn)行了消息發(fā)布后,所有訂閱它的客戶端都會(huì)收到相應(yīng)的消息。這一功能最明顯的用法就是用作實(shí)時(shí)消息系統(tǒng),比如普通的即時(shí)聊天,群聊等功能。


        稍微復(fù)雜的場(chǎng)景我們會(huì)使用消息中間件:RabbitMQ、RocketMQ、ActiveMQ、kafka

        推薦學(xué)習(xí):Redis視頻教程

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国产精品人人做人人爽| 青草青草久热精品视频在线观看| 精品综合久久久久久88小说| 国产精品免费大片| 日本精品久久久久影院日本| 亚洲综合一区二区国产精品| 8AV国产精品爽爽ⅴa在线观看| 亚洲国产成人精品女人久久久 | 青青青青久久精品国产h| 亚洲精品狼友在线播放| 久久久久亚洲精品无码网址| 办公室久久精品| 精品在线免费观看| 国产成人精品日本亚洲专| 精品熟女少妇a∨免费久久| 中国精品18videosex性中国| 亚洲国产精品国产自在在线| 久久国产午夜精品一区二区三区| 98精品国产自产在线XXXX| 午夜精品视频在线观看| 久久99热国产这有精品| 国产精品久久久久久久久免费| 国产乱码精品一品二品| 国产精品国产亚洲精品看不卡| 精品调教CHINESEGAY| 国产精品天干天干综合网| 国产精品亚洲精品日韩已满| 久久精品a亚洲国产v高清不卡| 无码精品国产VA在线观看DVD | 国产精品视频一区二区三区无码| 少妇人妻精品一区二区三区| 自拍偷自拍亚洲精品被多人伦好爽| 日韩精品一二三区| 亚洲精品第一国产综合精品99| 亚洲精品偷拍视频免费观看| 亚洲欧美日韩另类精品一区二区三区 | 91麻豆精品国产自产在线观看一区| 国产精品熟女高潮视频| 国产AV午夜精品一区二区入口| 国产精品区免费视频| 国产成人久久精品区一区二区|