说说怎么用setnx实现分布式锁的吧

一开始采用Redis的setnx命令实现分布式锁,set成功就获取锁成功,失败就没获取锁。结合ex过期时间防止死锁。我们的命令是这样的: set lock 1 ex 10 nx。
存在问题 误删别人的锁
于是我们在锁中加入了线程标识(uuid)
存在问题 拿锁比锁删锁的操作不是原子性的
于是我们采用lua脚本进行改进
存在问题 锁续期
于是我们采用了redisson分布式锁,可重入,可重试,采用看门狗机制续期(如果一个拿到锁的线程没有完成逻辑,看门狗会帮助线程不断延长锁的超时时间)
重生之八股仙帝 文章被收录于专栏

曾有一千古奇人,精修八股文,成遁世之高人,彻天彻地畅游天地间。 今人皆忙忙,急于求成,岂不知八股乃道门口径,背负天人,若经熟读背诵,更能开拓智慧之门,探寻未来之路。 天下繁华,不尽长夜,唯有读书为伴,熟读八股文更是攀登高峰之路。磨砺文字,升腾智慧,唯有勤玉立志,始可破天荒,登临九重不竭之巅! 吾辈修炼之路,虽曲折荆棘,但信念不曾磨灭,唯有铭记八股精髓,方能指引灵魂归宿,成就一生辉煌!

全部评论
存在问题 拿锁比锁删锁的操作不是原子性的????为啥,有没有老哥详细解释一下
点赞
送花
回复
分享
发布于 2023-08-31 11:15 陕西

相关推荐

点赞 2 评论
分享
牛客网
牛客企业服务