Navicat Blog

Redis Pub/Sub 指南 2023 年 7 月 26 日,由 Robert Gravelle 撰寫

Redis 不僅是一個資料庫,還可以充當訊息代理,支援發佈和訂閱(Pub/Sub)作業。本文將使用 Navicat for Redis 簡要介紹一下 Redis 的 Pub/Sub 功能。

關於發佈或訂閱訊息範式

Pub/Sub 是一種模式,傳送者(廣播者)不會直接向特定的接收者(訂閱者)傳送訊息。而是將發佈的訊息傳送至頻道上,並且傳送者不知道有多少訂閱者正在訂閱這個頻道。而訂閱者可以訂閱一個或多個頻道,以便只接收自己感興趣的訊息。以這種方式將發佈者和訂閱者分離,有助於提高可擴展性,並更容易管理複雜系統中的訊息流程。

Redis Pub/Sub 提供了一穜輕量型、快速、可擴展的訊息傳遞解決方案,可用於各種目的,例如即時通知,在微服務之間傳遞訊息或在單一應用程式的不同部分之間進行通訊。

Redis 中的訊息傳遞

Redis 採用最多一次訊息傳遞系統,顧名思義,訊息最多只會傳遞一次。因此,一旦 Redis 伺服器傳送了訊息,就不會再次傳送。如果訂閱者無法接收訊息(例如由於錯誤或網路中斷),訊息將永遠丟失。就像在收音機上收聽你最喜愛的節目,如果錯過了,就沒有機會再聽到。如果你的應用程式需要更強的投遞保證,應使用 Redis Streams。

此外,Pub/Sub 與鍵空間無關,這意味著在資料庫 10 上發佈的訊息可以被資料庫 1 上的訂閱者接收到。如果需要範圍界定,Redis 建議在頻道名稱前加上前置詞(例如 prod_mychannel、test_mychannel)。

使用 Navicat for Redis 發佈訊息

Navicat for Redis(或 Navicat Premium)中,我們可以透過主工具列上的 Pub/Sub 按鈕開啟 Pub/Sub 畫面。我們可以在那裡使用「發佈窗格」發佈訊息:

pub-sub_screen (106K)

在 Redis 中,頻道不是由使用者建立的。當發佈第一條訊息或用戶端訂閱時,頻道會自動建立。作為示範,我們將使用同一個 Redis 伺服器建立兩個連線。每個連線將充當不同的用戶端,第一個連線將訂閱「test_channel」,而第二個連線將向同一頻道發佈訊息。這樣做,我們希望訊息在發佈後能立即傳遞給訂閱者。

在 Navicat 中訂閱頻道,只需按一下「訂閱」按鈕。這將開啟「訂閱」對話方塊:

subscribe_dialog (117K)

在這裡,我們需要輸入頻道名稱「test_channel」,然後按一下「訂閱」。對話方塊關閉後,頻道將出現在「頻道」清單中,並記錄了訂閱操作:

channel_added (110K)

如果要在 Navicat 中發佈訊息,我們需要在「頻道」清單中選擇一個頻道(由於我們此時只有一個頻道,因此這是預設選項),然後在「訊息」文字方塊中輸入訊息,並按一下「發佈」。此時,我們應該會看到收到訊息的通知:

message_received (75K)

總結

本文使用 Navicat for Redis 簡要介紹了 Redis 的 Pub/Sub 功能。

如果你想試用 Navicat for Redis,可以 在此 下載試用版。試用版具備完整功能,試用期為 14 天。

Navicat Blogs
Feed Entries
Blog Archives
Share