首页 > 编程语言 > 详细

python使用redis实现协同控制的分布式锁

时间:2019-11-19 16:03:43      阅读:97      评论:0      收藏:0      [点我收藏+]

python使用redis实现协同控制的分布式锁

上午的时候,有个腾讯的朋友问我,关于用zookeeper分布式锁的设计,他的需求其实很简单,就是节点之间的协同合作。 我以前用redis写过一个网络锁,趁着这个机会就分享了出去。 

其实核心的代码就那几行,就是借用redis setnx来原子性的加一个锁,然后用expire来控制过期时间。

 

注: setnx跟set的区别在于,setnx是原子性的操作,用set会出现一个问题,比如我先get key看看key是否存在,当我再次去判断的时候,有可能别人把这个key给配置了,这就成了非原子操作。 

 

在介绍下这个用redis实现的分布式锁,他还含有retry和timetout的功能。

麻痹的爬虫呀,哎,说明下原文地址是,http://xiaorui.cc

*   用with做锁的逻辑语句

*   timeout避免了避免了任务出现异常,没有做delete操作

*   对于长时间的业务,增加retry重试锁的次数

*   对于长时间的业务,增加retry重试锁的次数

 


同时运行test.py and test2.py

python test.py

 

python test2.py

 

 

已经把redis_netlock提交到了pypi项目里面。 

 


下面是redis_netlock的git地址。

 

 


对Golang感兴趣的朋友可以加群: 278517979 !!!
另外如果大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码, 感谢!
另外再次标注博客原地址  xiaorui.cc

python使用redis实现协同控制的分布式锁

原文:https://www.cnblogs.com/leijiangtao/p/11889637.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!