design-patterns - 通过 redis 与推拉共享状态

标签 design-patterns redis publish-subscribe

我想通过 Redis 共享具有以下要求的状态:

  1. 解耦:解耦发布者和订阅者
  2. 单一所有权:每个状态都由一个发布者设置
  3. 推送:一旦状态发生变化,必须立即通知相关订阅者
  4. 拉取:订阅者初始化后应立即拉取相关状态

如果在没有 PULL 的情况下需要 PUSH,pub\sub 将是最优的
如果在没有 PUSH 的情况下需要 PULL,一个简单的 redis 键和值就可以很好地工作

支持所有需求的最佳设计模式是什么?

最佳答案

一个解决方案是同时使用 pub\sub 来发布(推送)状态更改,并使用散列来保持订阅者可以从中读取(拉取)的每种最新发布状态

唯一的障碍是您需要按如下方式处理竞争条件:

  • 发布者应该通知然后更新状态
  • 订阅者应该先订阅再读取状态

关于design-patterns - 通过 redis 与推拉共享状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18985071/

相关文章:

java - 哪种面向对象的 GUI 设计能够正确地结合命令模式和观察者模式?

java - 需要使用Java RMI创建发布者-订阅者

python - Redis-py hset() 映射 - 设置多个项目值时出现 TypeError

redis - 如何在 Redis key 中使用计数器?

go - Redis 在 docker 容器中失去连接

jms - 我们可以在发布/订阅消息传递中使用请求/回复模型吗?

Redis 命令获取发布/订阅的所有可用 channel ?

c# - 在 C# 中搜索字节数组中的最长模式

c - C(或一般过程编程)的设计原则、最佳实践和设计模式?

java - "Feature Oriented Programming"(FOP) 在 C++ 中有什么意义,它在 Java 和 C# 中有意义吗?