1、是什么
是一種通信模式:發(fā)送者(PUBLISH)發(fā)送消息,訂閱者(SUBSCRIBE)接收消息,可以實(shí)現(xiàn)進(jìn)程間的消息傳遞
Redis可以實(shí)現(xiàn)消息中間件MQ的功能,通過發(fā)布訂閱實(shí)現(xiàn)消息的引導(dǎo)和分流
2、能干啥
Redis客戶端可以訂閱任意數(shù)量的頻道,類似于微信關(guān)注多個(gè)公眾號(hào)
當(dāng)有新消息通過PUBLISH命令發(fā)送給頻道channel時(shí)
3、常用命令
3.1、SUBSCRIBE channel [channel.。.]
訂閱給定的一個(gè)或多個(gè)頻道的信息
推薦先執(zhí)行訂閱后再發(fā)布,訂閱成功之前發(fā)布的消息是收不到的
訂閱的客戶端每次可以收到3個(gè)參數(shù)的消息
消息的種類
始發(fā)頻道的名稱
實(shí)際的消息內(nèi)容
3.2、PUBLISH channel message
發(fā)布消息到指定的頻道
3.3、PSUBSCRIBE pattern [pattern.。.]
按照模式批量訂閱,訂閱一個(gè)或多個(gè)符合給定模式(支持*號(hào)?號(hào)之類的)頻道
3.4、PUBSUB subcommand [argument [argument.。.]]
查看訂閱與發(fā)布系統(tǒng)狀態(tài)
PUBSUB CHANNELS
由活躍頻道組成的列表
PUBSUB NUMSUB channel [channel.。.]
某個(gè)頻道有幾個(gè)訂閱者
PUBSUB NUMPAT
只統(tǒng)計(jì)使用PSUBSCRIBE命令執(zhí)行的,返回客戶端訂閱的唯一模式的數(shù)量
3.5、UNSUBSCRIBE channel [channel.。.]
取消訂閱
3.6、PUNSUBSCRIBE pattern [pattern.。.]
退訂所有給定模式的頻道
4、案例演示
開啟3個(gè)客戶端,演示客戶端A、B訂閱消息,客戶端C發(fā)布消息
演示批量訂閱和發(fā)布
取消訂閱
5、小總結(jié)
Redis可以實(shí)現(xiàn)消息中間件MQ的功能,通過發(fā)布訂閱實(shí)現(xiàn)消息的引導(dǎo)和分流
Pub/Sub缺點(diǎn)
發(fā)布的消息在Redis系統(tǒng)中不能持久化,因此,必須先執(zhí)行訂閱,再等待消息發(fā)布,如果先發(fā)布了消息,那么該消息由于沒有訂閱者,消息將被直接丟棄
消息只管發(fā)送,對(duì)于發(fā)布者而言消息是即發(fā)即失的,不管接收,也沒有ACK機(jī)制,無(wú)法保證消息的消費(fèi)成功
以上的缺點(diǎn)導(dǎo)致Redis的Pub/Sub模式就像一個(gè)小玩具,在生產(chǎn)環(huán)境中幾乎無(wú)用武之地,為此,Redis5.0版本新增了Stream數(shù)據(jù)結(jié)構(gòu),不但支持多播,還支持?jǐn)?shù)據(jù)持久化,相比Pub/Sub更加的強(qiáng)大
審核編輯:黃飛
-
中間件
+關(guān)注
關(guān)注
0文章
65瀏覽量
18179 -
客戶端
+關(guān)注
關(guān)注
1文章
290瀏覽量
16694 -
Redis
+關(guān)注
關(guān)注
0文章
376瀏覽量
10880
原文標(biāo)題:一文拿捏Redis7 發(fā)布訂閱
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論