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

时间:2015-01-04 21:38:54

标签: node.js transactions redis atomic

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

  • 从Redis获取数据
  • 数据的预成型计算
  • 将新结果写回Redis

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

我如何使上述过程成为原子?

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

有人可以提供建议吗?

2 个答案:

答案 0 :(得分:1)

对这个问题缺乏明确性表示道歉。

在进一步阅读之后,确实我可以使用事务,但是我正在努力理解的领域是我需要将更新中的读取分开,并将更新包装在事务中以及在读取时使用WATCH。如果发生另一次更新,这会导致更新事务失败。

所以工作流程是:

WATCH key
GET key
MULTI
SET key
EXEC

希望这对任何希望获得原子获取和更新的人都有用。

答案 1 :(得分:0)

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