Redis存储(或任何数据库?)锁机制(NodeJS)

时间:2012-02-29 10:31:48

标签: database node.js locking redis storage

我遇到以下问题:我通过RedisNodeJSmranney's driver一起使用,我的NodeJS网络服务器正在从Redis检索一些数据,对其进行一些操作并保存回到Redis。但是这个操作(称之为X)可能需要一段时间,因此多个用户可以在同一资源上同时触发它。

因此,如果用户A触发X并且用户B同时触发X,我希望用户A完成作业,然后用户B获取(已处理)数据并执行X.同时用户B等待。用户的顺序是无关紧要的 - 只有一次一个。那么如何在我的场景中实现这一目标呢?如何锁定/解锁Redis?它甚至可能吗?

1 个答案:

答案 0 :(得分:6)

有几种方法可以在Redis中实现锁定,而不需要了解更多有关SETNX可能起作用的场景的方法。请参阅Redis文档中的Design pattern: Locking with SETNX。此外,transactions in Redis可能是有趣的阅读,虽然我怀疑它并不完全是你在这种情况下所追求的。