想要“锁定”外部资源,在这种情况下,它将是存储在rackspace cloud servers上的“blob”,类似于Amazon S3。 (使用Python)
想要像这样处理竞争条件:
想使用Memcached或Redis来创建锁,但是不同的机制也可以。
大部分内容非常简单,我正在努力解决的问题是如何在删除锁定时通知第二个进程,而不是强制它等待并重试。
Redis有publish / subscribe functionality,这适合在这种情况下使用吗?
或者我还有其他方法可以解决这个问题吗?
非常感谢!
答案 0 :(得分:1)
对于Redis,如果您确实需要锁定,可以使用SETNX
创建此类锁定,可以在SETNX documentation中找到更多信息。
如果您预计给定锁定的争用率较低,并且您没有对锁定信息进行任何资源饥饿处理,您也可以使用WATCH
/ MULTI
/ EXEC
次交易。首先在你要编辑的密钥上设置WATCH,然后在MULTI
中编辑密钥本身,最后在EXEC
之后,编辑失败,因为有人同时编辑了监视密钥(然后你需要重试)或者它返回OK,你很好。这就是你在Redis中实现机会锁定的方法。 transaction documentation