【问题标题】:avoid redis race condition避免 redis 竞争条件
【发布时间】:2015-01-30 09:36:18
【问题描述】:

我试图弄清楚如何在更新 redis 时避免出现竞争情况。这是我的场景:由于查询参数长度限制,我有一条消息被分成几个 http GET 请求。我正在使用 redis 来存储临时消息块,当我拥有所有块时,我将它们连接起来并将它们存储在数据库中。块用消息 id 标记,我将块存储在以“$”分隔的字符串中,由消息 id 键入。当我得到一个新块时,我得到了块字符串,然后附加新块+'$',并将其设置回redis。问题是我担心如果我调用 set,并且在我下一次 get 之前那个 set 命令还没有完成执行,我将没有最新的块字符串。如果我有一个单一的 redis 客户端,也许这会缓解这个问题,因为大概命令是按照在服务器上接收的顺序执行的?任何见解都值得赞赏,包括有关如何以更理智的方式构建消息重组的建议?谢谢你。

【问题讨论】:

    标签: node.js redis message-queue


    【解决方案1】:

    这里最简单的做法是使用 Redis 的 APPEND 命令 - 这将节省您获取值的往返过程并确保操作的原子性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-25
      • 2010-09-25
      • 2019-06-12
      • 1970-01-01
      • 2020-01-16
      • 2014-04-02
      • 2017-10-04
      相关资源
      最近更新 更多