Node.js - 使用 Redis 原子更新进行扩展

Node.js - Scaling with Redis atomic updates

我有一个 Node.js 应用可以执行以下操作:

这个过程每秒可能发生几次。我现在面临的问题是我希望运行此过程的多个实例,并且由于每个节点更新后另一个节点获得了最后一个值,我显然看到更新了过时的日期。

如何使上述过程原子化?

我无法将操作添加到 Redis 中的事务,因为我需要在处理和更新之前获取数据(这会强制提交)。

谁能指点一下?

Redis 支持原子事务http://redis.io/topics/transactions

对于问题不够清晰,我们深表歉意。

进一步阅读后,我确实可以使用事务,但我一直难以理解的地方是我需要将读取与更新分开,并将更新包装在事务中,同时在读取时使用 WATCH。如果发生另一个更新,这将导致更新事务失败。

所以工作流程是:

WATCH key
GET key
MULTI
SET key
EXEC

希望这对寻求原子获取和更新的其他人有用。