Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 与push&;共享状态;通过redis拉动_Design Patterns_Redis_Publish Subscribe - Fatal编程技术网

Design patterns 与push&;共享状态;通过redis拉动

Design patterns 与push&;共享状态;通过redis拉动,design-patterns,redis,publish-subscribe,Design Patterns,Redis,Publish Subscribe,我希望通过Redis共享一个状态,并满足以下要求: 解耦:解耦的发布者和订阅者 单一所有权:每个状态由一个发布者设置 推送:一旦状态发生变化,必须立即通知相关订户 拉取:一旦订户初始化,它应该立即拉取相关状态 如果需要在不使用PULL的情况下进行PUSH,则pub\sub将是最佳选择 如果需要拉而不推,那么一个简单的redis键和值就可以很好地工作 支持所有需求的最佳设计模式是什么?一种解决方案是使用pub\sub来发布(推送)状态更改,并使用散列来保持订阅服务器可以读取(拉送)的每种最新发布状

我希望通过Redis共享一个状态,并满足以下要求:

  • 解耦:解耦的发布者和订阅者
  • 单一所有权:每个状态由一个发布者设置
  • 推送:一旦状态发生变化,必须立即通知相关订户
  • 拉取:一旦订户初始化,它应该立即拉取相关状态
  • 如果需要在不使用PULL的情况下进行PUSH,则pub\sub将是最佳选择
    如果需要拉而不推,那么一个简单的redis键和值就可以很好地工作


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

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

    唯一的障碍是你需要按如下方式处理比赛条件:

    • 发布者应通知并更新状态
    • 订阅者应首先订阅,然后读取状态