【⚡ 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的沙龍
141會員
307內容數
哈囉,我是阿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
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
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
JavaScript 套件,頁碼 Pagination.js 搭配 axios API 請求範例
Thumbnail
JavaScript 套件,頁碼 Pagination.js 搭配 axios API 請求範例
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News