【⚡ Cache伺服器 - Redis】使用pub/sub來完成通知訂閱機制

更新於 發佈於 閱讀時間約 3 分鐘

有時候我們的API會處理運算功能, 因此會設計為多機來進行分散運算的作業, 但問題來了! 假設我們設計一個修改的API, 修改某個值, 但其它機器的API究竟要如何知曉並更新值呢?

raw-image



這時候就需要來個通知與訂閱

我們在佇列系列主題有提到Queue的概念, 歡迎參考一下, 這會與我們的通知訂閱的概念相似:


那在Redis可以怎麼做呢? 關鍵的Channel通道, 所有的訊息傳遞都會在建立起來的通道上傳輸。

raw-image



通知端

對哪個頻道發布訊息。

channel = "notifications"
message = "通知訊息!"
redis_client.publish(channel, message)
print(f"Message published to channel '{channel}': {message}")



訂閱端

對哪個頻道訂閱訊息。


pubsub = redis_client.pubsub()
channel = "notifications"
pubsub.subscribe(channel)
print(f"Subscribed to channel '{channel}'")

# 等待消息
for message in pubsub.listen():
if message['type'] == 'message': # 過濾出普通消息類型
print(f"Received message: {message['data']}")



注意事項

Redis的Channel概念並不是像佇列哦! 它並不能保存數據, 因此是一種即時通知的概念, 在訂閱之前的訊息在訂閱之後試看不到的, 這點需要注意一下。

還有以下幾點也是值得注意的部份:

  • 一旦訂閱某個頻道, 會接收到該頻道的所有訊息, 因此雜訊要自己濾除。
  • 無順序性及重試機制。



結語

在Redis的通知訂閱機制只是讓我們在上線後可以透過該渠道互通訊息, 但若要更加的穩健的話請選擇Kafka、RabbitMQ、RedisStream…等專門處理消息隊列的系統。

留言
avatar-img
留言分享你的想法!
avatar-img
阿Han的沙龍
129會員
286內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2025/04/09
我們在「【⚡ Cache伺服器 - Redis】 讓系統服務更加順暢的快取機制」 分享如何使用Docker架設Redis, 在進入此篇章之前也請您親自架設一遍, 這樣才能加深學習的效果, 接下來我們會使用Python這套程式語言進行示範與說明, 讓我們以實戰的方式來練習, 將技術內化為知識, 達到真
Thumbnail
2025/04/09
我們在「【⚡ Cache伺服器 - Redis】 讓系統服務更加順暢的快取機制」 分享如何使用Docker架設Redis, 在進入此篇章之前也請您親自架設一遍, 這樣才能加深學習的效果, 接下來我們會使用Python這套程式語言進行示範與說明, 讓我們以實戰的方式來練習, 將技術內化為知識, 達到真
Thumbnail
2025/04/02
這邊主要會分享我們在使用Redis的過程中常常會遇到的一些狀況與解決辦法, 因此這些實戰經驗真的非常寶貴, 也歡迎與我們分享您的不同作法, 讓我們一起學習吧! 對了! 這個篇章我們會持續的將經驗談陸續更新上來, 敬請持續追蹤 😊。 關於Redis的篇章歡迎參考我們的: 【⚡ Cach
Thumbnail
2025/04/02
這邊主要會分享我們在使用Redis的過程中常常會遇到的一些狀況與解決辦法, 因此這些實戰經驗真的非常寶貴, 也歡迎與我們分享您的不同作法, 讓我們一起學習吧! 對了! 這個篇章我們會持續的將經驗談陸續更新上來, 敬請持續追蹤 😊。 關於Redis的篇章歡迎參考我們的: 【⚡ Cach
Thumbnail
2025/03/26
想像一下它是一個很快的筆記本 📕 Redis 是一個可以存放資料的地方,像字典一樣,你用一個「鑰匙」(key)去存或取一個「值」(value), 但比一般的字典更厲害的是,Redis 可以處理各種資料類型,不只文字,還有清單、集合、甚至小地圖(hash)! ⚡ 超級快 它把所有資料放
Thumbnail
2025/03/26
想像一下它是一個很快的筆記本 📕 Redis 是一個可以存放資料的地方,像字典一樣,你用一個「鑰匙」(key)去存或取一個「值」(value), 但比一般的字典更厲害的是,Redis 可以處理各種資料類型,不只文字,還有清單、集合、甚至小地圖(hash)! ⚡ 超級快 它把所有資料放
Thumbnail
看更多
你可能也想看
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
我們在「【Message Queue - Kafka】不斷的試誤…, 用Docker來嘗試安裝Kafka」有介紹如何架設kafka, 其中我們使用環境變數來進行kafka的配置, 但除了環境變數之外, 其實還能夠用檔案配置的方式來對kafka進行配置, 如此一來我們就可以將配置檔與啟動檔完全分開,
Thumbnail
我們在「【Message Queue - Kafka】不斷的試誤…, 用Docker來嘗試安裝Kafka」有介紹如何架設kafka, 其中我們使用環境變數來進行kafka的配置, 但除了環境變數之外, 其實還能夠用檔案配置的方式來對kafka進行配置, 如此一來我們就可以將配置檔與啟動檔完全分開,
Thumbnail
本文介紹了在網站開發中如何運用狀態機的原則和設計方法。通過具體案例分析,以及狀態和數據的區分,詳細介紹了狀態機的設計原則和應用。讀者可以通過本文瞭解如何將狀態機應用於實際的網站開發中。
Thumbnail
本文介紹了在網站開發中如何運用狀態機的原則和設計方法。通過具體案例分析,以及狀態和數據的區分,詳細介紹了狀態機的設計原則和應用。讀者可以通過本文瞭解如何將狀態機應用於實際的網站開發中。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
需求情境: 在設計畫面時,資料來源是後台的 api,每一次畫面細節的修修改改,都會觸發 Xcode Preview 程序,導致不斷呼叫後台。此時若資料結構和大小都具有一定規模,就會導致效率低落,不斷等待,且消耗伺服器資源甚鉅。 解決方案: 將後台傳回的資料以檔案形式暫存在本地端,每次 pr
Thumbnail
需求情境: 在設計畫面時,資料來源是後台的 api,每一次畫面細節的修修改改,都會觸發 Xcode Preview 程序,導致不斷呼叫後台。此時若資料結構和大小都具有一定規模,就會導致效率低落,不斷等待,且消耗伺服器資源甚鉅。 解決方案: 將後台傳回的資料以檔案形式暫存在本地端,每次 pr
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
Thumbnail
R036 Blog API 伺服器的維護更新日誌 (2024/04/30) 開發環境技術 語言: Javascript 環境: Node JS 框架: Express.js 本次維護目的 優化及測試API伺服器程運行 重溫程式碼架構以便日後更新優化 Reac
Thumbnail
R036 Blog API 伺服器的維護更新日誌 (2024/04/30) 開發環境技術 語言: Javascript 環境: Node JS 框架: Express.js 本次維護目的 優化及測試API伺服器程運行 重溫程式碼架構以便日後更新優化 Reac
Thumbnail
JavaScript 套件,頁碼 Pagination.js 搭配 axios API 請求範例
Thumbnail
JavaScript 套件,頁碼 Pagination.js 搭配 axios API 請求範例
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
Redis被稱為「資料結構伺服器」,因為其中的值(Value)可以是字串(String)、雜湊(Hash)、清單(List)、集合(Set)和有序集合(Sorted Set)等類型。 安裝 下載 wget https://download.redis.io/release/redis-6.
Thumbnail
Redis被稱為「資料結構伺服器」,因為其中的值(Value)可以是字串(String)、雜湊(Hash)、清單(List)、集合(Set)和有序集合(Sorted Set)等類型。 安裝 下載 wget https://download.redis.io/release/redis-6.
Thumbnail
提到後端工程師,似乎就只是開發 API,但一個複雜的系統其實不太可能只透過 API 就能完成,例如一個簡單的功能,註冊會員,其實是由好幾個不同類型的工作互相配合,您才能收到開通信,才確保資料庫不會有一堆未開通帳號等。所以今天就來聊聊一個系統有幾種不同執行方式的工作。
Thumbnail
提到後端工程師,似乎就只是開發 API,但一個複雜的系統其實不太可能只透過 API 就能完成,例如一個簡單的功能,註冊會員,其實是由好幾個不同類型的工作互相配合,您才能收到開通信,才確保資料庫不會有一堆未開通帳號等。所以今天就來聊聊一個系統有幾種不同執行方式的工作。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News