網(wǎng)站建設(shè)明細(xì)報(bào)價(jià)單凡科網(wǎng)免費(fèi)建站
Redis 不僅僅是一個(gè)數(shù)據(jù)庫(kù),還可以作為支持發(fā)布和訂閱(Pub/Sub)操作的消息代理。本文將使用?Navicat for Redis?簡(jiǎn)要概述 Redis 的 Pub/Sub 功能。
關(guān)于發(fā)布或訂閱消息范式
Pub/Sub 是一種模式,發(fā)送者(廣播者)不能向特定接收者(訂閱者)發(fā)送消息。相反,發(fā)布的消息以頻道形式發(fā)送,并且發(fā)送者不知道有多少訂閱者正在訂閱這個(gè)頻道。而訂閱者可以訂閱一個(gè)或多個(gè)頻道,以便只接收他們感興趣的消息。以這種方式對(duì)發(fā)布者和訂閱者進(jìn)行解構(gòu)能提高可擴(kuò)展性,并更容易管理復(fù)雜系統(tǒng)中的信息流。
Redis Pub/Sub 提供了一種輕量級(jí)、快速、可擴(kuò)展的消息解決方案,可用于各種目的,例如實(shí)時(shí)通知,在微服務(wù)之間發(fā)送消息或在單個(gè)應(yīng)用程序的不同部分之間進(jìn)行通信。
Redis中的消息傳遞
Redis 采用最多一次消息傳遞系統(tǒng)。顧名思義,消息只會(huì)被傳遞一次。因此,一旦 Redis 服務(wù)器發(fā)送消息,就不會(huì)再次發(fā)送。如果訂閱者無法接收消息(例如,由于錯(cuò)誤或網(wǎng)絡(luò)中斷),則消息將永遠(yuǎn)丟失。就像在收音機(jī)上收聽你最喜歡的節(jié)目一樣,如果錯(cuò)過了,就沒有機(jī)會(huì)再聽到。如果你的應(yīng)用程序需要更強(qiáng)的傳遞保證,你應(yīng)該使用 Redis Streams。
此外,Pub/Sub 與鍵空間無關(guān)。這意味著在數(shù)據(jù)庫(kù) 10 上發(fā)布的消息能被數(shù)據(jù)庫(kù) 1 上的訂閱者接收到。如果你需要范圍界定,Redis 建議在頻道名加上前綴(即 prod_mychannel,test_mychannel)。
使用 Navicat for Redis 發(fā)布消息
在?Navicat for Redis(或Navicat Premium)中,我們可以通過主工具欄上的 Pub/Sub 按鈕打開 Pub/Sub 畫面。我們可以在那里使用“發(fā)布窗格”發(fā)布消息:
在 Redis 中,頻道不是由用戶創(chuàng)建的。當(dāng)發(fā)布第一條消息或客戶端訂閱時(shí),頻道會(huì)自動(dòng)創(chuàng)建。為了演示,我們將使用同一個(gè) Redis 服務(wù)器創(chuàng)建兩個(gè)連接。每個(gè)連接將充當(dāng)不同的客戶端。第一個(gè)連接將訂閱“test_channel”,而第二個(gè)連接將向同一頻道發(fā)布消息。這樣做,我們希望消息在發(fā)布后能立即傳遞給訂閱者。
在 Navicat 中訂閱頻道,我們只需要點(diǎn)擊“訂閱”按鈕即可。這將打開“訂閱”對(duì)話框:
在這里,我們將輸入頻道名稱“test_channel”,然后點(diǎn)擊“訂閱”。對(duì)話框關(guān)閉后,頻道將出現(xiàn)在“頻道”列表中,并記錄訂閱操作:
如果要在 Navicat 中發(fā)布消息,我們將在“頻道”列表中選擇一個(gè)頻道(由于我們此時(shí)只有一個(gè)通道,因此是默認(rèn)選項(xiàng)),然后在“消息”文本字段中輸入消息,點(diǎn)擊“發(fā)布”。此時(shí),我們應(yīng)該看到收到消息的通知:
總結(jié)
本文使用 Navicat for Redis 簡(jiǎn)要介紹了 Redis 的 Pub/Sub 功能。如果你有興趣試用 Navicat for Redis,可以在?此處?下載。試用版具備完整功能,試用期為 14 天。
相關(guān)技術(shù)文章
開始使用 Redis
Navicat for Redis 功能介紹
Redis 數(shù)據(jù)類型
如何在 Redis 中處理鍵值
Redis Pub/Sub 指南
Redis 列表 | 概述