gpt4 book ai didi

python - Redis 或 Memcached 是否可以用于 "lock"资源,例如 S3 之类的 blobstore?

转载 作者:IT王子 更新时间:2023-10-29 06:07:04 26 4
gpt4 key购买 nike

想要“锁定”外部资源,在本例中它将是存储在 rackspace cloud servers 上的“blob” ,类似于 Amazon S3。 (使用 Python)

希望像这样处理竞争条件:

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

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

其中大部分都非常简单,我正在努力解决的部分是如何在锁被移除时通知第二个进程,而不是强制它等待并重试。

Redis 有 publish / subscribe functionality ,在这种情况下是否适合使用?

或者我应该采用其他方法来解决这个问题吗?

非常感谢!

最佳答案

对于Redis,如果你真的需要加锁,你可以使用SETNX来创建这样的锁,更多信息可以在SETNX documentation中找到。 .

如果您期望给定锁的低争用,并且您没有任何资源饥饿处理锁定信息,您还可以使用 WATCH/MULTI/EXEC 事务。首先在要编辑的 key 上设置 WATCH,然后在 MULTI 中编辑 key 本身,最后在 EXEC 之后,编辑失败,因为有人同时编辑了该 key watched 键(然后你需要重试)或者它返回 OK 并且你很好。这就是您在 Redis 中实现机会锁定的方式。更多信息在 transaction documentation

关于python - Redis 或 Memcached 是否可以用于 "lock"资源,例如 S3 之类的 blobstore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com