首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis或Memcached是否可以用来“锁定”资源,比如像S3这样的lock存储?

Redis或Memcached是否可以用来“锁定”资源,比如像S3这样的lock存储?
EN

Stack Overflow用户
提问于 2012-10-17 21:15:45
回答 1查看 629关注 0票数 2

想要“锁定”外部资源,在这种情况下,它将是存储在rackspace云服务器上的"blob“,类似于S3。(使用Python)

想要这样处理比赛条件:

  • 第一个进程创建对资源的锁定
  • 第一个进程开始编辑资源
  • 第二,进程尝试编辑相同的资源,并发现资源被锁定。
  • 第二个进程请求在解除锁定时得到通知。
  • 首先,进程完成对资源的编辑并移除锁。
  • 第二个进程接收已释放资源的通知,并能够自己进行编辑。

想要使用Memcached或Redis来创建锁,但是使用不同的机制也可以。

这其中的大部分都很简单,我挣扎的部分是当锁被移除时如何通知第二个进程,而不是强迫它等待和重试。

Redis有发布/订阅功能,在这种情况下使用它合适吗?

或者我还有别的办法来解决这个问题?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-19 10:54:05

至于Redis,如果您确实需要进行锁定,可以使用SETNX创建这样的锁,可以在SETNX文件中找到更多的信息。

如果您期望对给定的锁进行低争用,并且对锁定的信息没有任何资源需求的处理,也可以使用WATCH/MULTI/EXEC事务。首先在要编辑的键上设置WATCH,然后在MULTI中编辑键本身,最后在EXEC之后,它要么会失败,因为有人同时编辑了查看键(然后您需要重试),要么它返回OK,您就没事了。这就是在Redis中实现机会锁定的方式。关于交易文件的更多信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12943511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档