Redis - PubSub 实战应用场景

前言

在网路上已经有许多针对 Redis PubSub 的功能、优缺点、规格等有非常详细的解说
但大部分的介绍并不会告诉你在哪些情景下使用,如何权衡优缺点

最近在开发上遇到了 Redis PubSub 的实战改良场景
虽然我不是主力开发这项问题的人,但稍微有点关係就趁机研究了一下
既然机会难得,于是有了这篇的诞生
本篇中并不会详细说明 Redis PubSub,如不知道的话可以参考 Redis 的官方文件

开发场景

一般在开发上很常见到开关按钮的需求
例如在家中闭关总电源开关,家里的电器都会停止工作
这个需求做起来其实很简单,如图所示,只需要做出两个 API
一个用于设定状态,另一个用于取得状态

http://img2.58codes.com/2024/20118878eKYdCjrida.jpg

瓶颈与问题

不过这个简易架构会遇到两个问题

1

虽然 Redis 有着优越的读写性能,但开关状态实际上很少会更改
这是经典的多读少写场景,所以你的效能会全部浪费在重複的读取开关上

2

这时会想着,想要减少 Redis 的压力,这时候增加 local cache 就可以解决
但是这更现实,基本上有流量的伺服器可能是个 cluster
所以做 local cache 会让你的状态无法同步,功能产生问题

http://img2.58codes.com/2024/201188784JIuGJeQl2.jpg

改良方法

这时候根据遇到的瓶颈,即可利用 PubSub 来进行处理
不需要在每次需要知道状态的时候去读取,反之当状态被修改的时候,等人家来告诉我
但需要注意的事情是,如果使用 PubSub 的时候是不会储存资料在 Redis 中的
需要增加预防失败时的处理机制

http://img2.58codes.com/2024/20118878JCp6IScxao.jpg

参考资料

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

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章