iT邦幫忙

0

Redis - PubSub 實戰應用場景

  • 分享至 

  • xImage
  •  

前言

在網路上已經有許多針對 Redis PubSub 的功能、優缺點、規格等有非常詳細的解說
但大部分的介紹並不會告訴你在哪些情景下使用,如何權衡優缺點

最近在開發上遇到了 Redis PubSub 的實戰改良場景
雖然我不是主力開發這項問題的人,但稍微有點關係就趁機研究了一下
既然機會難得,於是有了這篇的誕生
本篇中並不會詳細說明 Redis PubSub,如不知道的話可以參考 Redis 的官方文件

開發場景

一般在開發上很常見到開關按鈕的需求
例如在家中閉關總電源開關,家裡的電器都會停止工作
這個需求做起來其實很簡單,如圖所示,只需要做出兩個 API
一個用於設定狀態,另一個用於取得狀態

https://ithelp.ithome.com.tw/upload/images/20240326/20118878eKYdCjrida.jpg

瓶頸與問題

不過這個簡易架構會遇到兩個問題

1

雖然 Redis 有著優越的讀寫性能,但開關狀態實際上很少會更改
這是經典的多讀少寫場景,所以你的效能會全部浪費在重複的讀取開關上

2

這時會想著,想要減少 Redis 的壓力,這時候增加 local cache 就可以解決
但是這更現實,基本上有流量的伺服器可能是個 cluster
所以做 local cache 會讓你的狀態無法同步,功能產生問題

https://ithelp.ithome.com.tw/upload/images/20240326/201188784JIuGJeQl2.jpg

改良方法

這時候根據遇到的瓶頸,即可利用 PubSub 來進行處理
不需要在每次需要知道狀態的時候去讀取,反之當狀態被修改的時候,等人家來告訴我
但需要注意的事情是,如果使用 PubSub 的時候是不會儲存資料在 Redis 中的
需要增加預防失敗時的處理機制

https://ithelp.ithome.com.tw/upload/images/20240326/20118878JCp6IScxao.jpg

參考資料

  • Redis PubSub:https://redis.uptrace.dev/zh/guide/go-redis-pubsub.html

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言