redis锁的问题

发布于 2022-09-06 13:23:48 字数 645 浏览 13 评论 0

我看网上这篇文章,http://blog.csdn.net/jj546630...
里面获取redis锁的过程

while lock != 1:
  now = int(time.time())
  lock_timeout = now + LOCK_TIMEOUT + 1
  lock = redis_client.setnx(lock_key, lock_timeout)
  if lock == 1 or (now > int(redis_client.get(lock_key))) and now > int(redis_client.getset(lock_key, lock_timeout)):  
    break
  else:
    time.sleep(0.001)
    

其中假如lock==0 且 now > int(redis_client.get(lock_key)
此时,now > int(redis_client.getset(lock_key, lock_timeout)这句有问题吧?这没有互斥啊,getset不是同步方法吧,这样怎么获取锁了?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文