说说setnx实现的分布式锁吧

一开始采用Redis的setnx命令实现分布式锁,set成功就获取锁成功,失败就没获取锁。结合ex过期时间防止死锁。我们的命令是这样的: set lock 1 ex 10 nx。

存在问题 误删别人的锁

于是我们在锁中加入了线程标识(uuid)

存在问题 拿锁比锁删锁的操作不是原子性的

于是我们采用lua脚本进行改进

存在问题 锁续期

于是我们采用了redisson分布式锁,可重入,可重试,采用看门狗机制续期(如果一个拿到锁的线程没有完成逻辑,看门狗会帮助线程不断延长锁的超时时间)#八股#
全部评论

相关推荐

2025-12-18 18:23
深圳大学 前端工程师
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
哞客37422655...:你猜为什么福利这么好还得一直追着你问
点赞 评论 收藏
分享
评论
点赞
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务