我想通过 Redis 共享具有以下要求的状态:
- 解耦:解耦发布者和订阅者
- 单一所有权:每个状态都由一个发布者设置
- 推送:一旦状态发生变化,必须立即通知相关订阅者
- 拉取:订阅者初始化后应立即拉取相关状态
如果在没有 PULL 的情况下需要 PUSH,pub\sub 将是最优的
如果在没有 PUSH 的情况下需要 PULL,一个简单的 redis 键和值就可以很好地工作
支持所有需求的最佳设计模式是什么?
最佳答案
一个解决方案是同时使用 pub\sub 来发布(推送)状态更改,并使用散列来保持订阅者可以从中读取(拉取)的每种最新发布状态
唯一的障碍是您需要按如下方式处理竞争条件:
- 发布者应该通知然后更新状态
- 订阅者应该先订阅再读取状态
关于design-patterns - 通过 redis 与推拉共享状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18985071/