想要“锁定”外部资源,在这种情况下,它将是存储在rackspace云服务器上的"blob“,类似于S3。(使用Python)
想要这样处理比赛条件:
想要使用Memcached或Redis来创建锁,但是使用不同的机制也可以。
这其中的大部分都很简单,我挣扎的部分是当锁被移除时如何通知第二个进程,而不是强迫它等待和重试。
Redis有发布/订阅功能,在这种情况下使用它合适吗?
或者我还有别的办法来解决这个问题?
非常感谢!
发布于 2012-10-19 10:54:05
至于Redis,如果您确实需要进行锁定,可以使用SETNX创建这样的锁,可以在SETNX文件中找到更多的信息。
如果您期望对给定的锁进行低争用,并且对锁定的信息没有任何资源需求的处理,也可以使用WATCH/MULTI/EXEC事务。首先在要编辑的键上设置WATCH,然后在MULTI中编辑键本身,最后在EXEC之后,它要么会失败,因为有人同时编辑了查看键(然后您需要重试),要么它返回OK,您就没事了。这就是在Redis中实现机会锁定的方式。关于交易文件的更多信息
https://stackoverflow.com/questions/12943511
复制相似问题