我遇到以下问题:我通过Redis将NodeJS与mranney's driver一起使用,我的NodeJS网络服务器正在从Redis检索一些数据,对其进行一些操作并保存回到Redis。但是这个操作(称之为X)可能需要一段时间,因此多个用户可以在同一资源上同时触发它。
因此,如果用户A触发X并且用户B同时触发X,我希望用户A完成作业,然后用户B获取(已处理)数据并执行X.同时用户B等待。用户的顺序是无关紧要的 - 只有一次一个。那么如何在我的场景中实现这一目标呢?如何锁定/解锁Redis?它甚至可能吗?
答案 0 :(得分:6)
有几种方法可以在Redis中实现锁定,而不需要了解更多有关SETNX
可能起作用的场景的方法。请参阅Redis文档中的Design pattern: Locking with SETNX
。此外,transactions in Redis可能是有趣的阅读,虽然我怀疑它并不完全是你在这种情况下所追求的。