redis - Redis 键空间通知 - 获取集合操作的值(小尺寸)
问题描述
我正在使用 Redis 创建数据库。
我的一项招聘是,系统中的所有客户都将能够收听设置事件并获取有关键和值更改的信息。
我知道发布价值可能很大(512 MB),但我知道在我的系统中价值的大小不会超过 100 个字符。
我有 3 种可能的解决方案,我想知道哪一种会更好或考虑其他解决方案:
1)每次set操作后客户端也会发布(PUB/SUB)
2)编辑 setGenericCommand 函数以发布值并使用键空间绑定。
3)客户端收到键空间通知后,将通过get操作获取值。
我想了解哪种方法会更好?谢谢!
解决方案
因此,首先,请记住,PubSub 最多只能交付一次。如果你真的需要处理客户端的每一个变化,你应该考虑一种更有弹性的方法来做到这一点。
也就是说,假设你对 PubSub 的承诺没问题,1 是最简单的,我会同意的。最多,我会为客户提供一个结合了SET
andPUBLISH
命令的 Lua 包装器。当然,这消除了实际收听 Keyspace 通知的需要,因为您基本上是自己实现它。
2 意味着破解 Redis,这很好,但意味着你必须维护自己的,这就是 meh--;
3 也很简单,但是使用 1,您只需往返一次而不是 2。
另一种 (4) 方法是编写自定义模块,但 IMO 过于复杂,无法满足此需求。选择 1 和 Lua,愿原力与你同在。
推荐阅读
- javascript - 未捕获的类型错误:项目不可迭代
- java - Java8 变量范围
- serilog - Serilog JSON 配置 LoggingLevelSwitch 访问
- spring-boot - 使用 Zoho 中继不受欢迎的 Spring Boot
- c++ - 为什么正则表达式(C++)需要指数时间?
- reporting-services - 带有自定义字段的 SSRS 矩阵报告
- python - Pandas 提取文本符号
- java - 将字符串中每个单词的每个首字母大写,该字符串用 markdown 的星号包裹。允许在星号中使用多个单词
- java - 没有不可变对象的 Selenium/JUnit 中的不可变映射错误
- javascript - 从静态类访问派生类属性