Press
esc
to close
请输入并搜索
Open梓彦
Open梓彦
首页
标签
分类
时间线
友链
关于
Press
Ctrl
+
and
K
to search
首页
标签
分类
时间线
友链
关于
后台
redis分布式锁过期时间
编辑
2026-01-09
redis
0
0
请注意,本文编写于 54 天前,最后修改于 54 天前,其中某些信息可能已经过时。
redis实现的分布式锁:
使用setnx命令时,需要设置 ttl,防止系统故障导致锁无法释放。
自己实现的分布式锁的缺陷:我们并不知道准确的业务执行时间,因此这个过期时间不好控制。
不可重入
因此我们使用第三方工具redisson:
提供看门狗(WatchDog),一个线程获取锁成功之后,WatchDog会给持有锁的线程续期(默认每隔10s续期)
可重入,底层采用了一个hash结构,用线程id和该锁锁的次数作为依据,如果发现锁已经被获取了,但是是当前线程获取的,我们就可以再次获得锁,并把次数加1。如果发现这个线程id不是自己的,则无法获取锁。释放锁的时候让次数减1即可。
不能做到主从的强一致性,如果需要,可以使用zookeeper实现的分布式锁。
底层还是setnx和lua
如果对你有用的话,可以打赏哦
打赏
< jwt 双token刷新方案
redis集群 >