我想弄清楚如何在更新 Redis 时避免竞争条件。这是我的场景:由于查询参数长度限制,我有一条消息被分解成几个 http GET 请求。我正在使用 redis 来存储临时消息 block ,当我拥有所有 block 时,我将它们连接起来并将它们存储在数据库中。这些 block 标有消息 ID,我将这些 block 存储在一个“$”分隔的字符串中,以消息 ID 为键。我在获取新 block 时获取 block 字符串,然后附加新 block +'$',并将其设置回redis。问题是我担心如果我调用 set,而 set 命令在我下一次获取之前还没有完成执行,我将不会有最新的 block 字符串。如果我只有一个 redis 客户端,也许这会缓解这个问题,因为这些命令可能是按照服务器接收到的顺序执行的?任何见解表示赞赏,包括有关如何以更理智的方式构建消息重组的建议?谢谢你。
最佳答案
这里最简单的做法是使用 Redis 的 APPEND命令 - 这将为您节省获取值的往返行程,并确保操作的原子性。
关于node.js - 避免 redis 竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27244347/