各种购物网站大全,上海市建设工程检测网,wordpress新建网站,网站网络优化服务Redisson分布式锁
主要了解了Redisson分布式锁实现的三个功能#xff1a; 1.可重入 - 防止死锁 2.可重试#xff08;i.e. 非阻塞获取锁#xff09; 3.自动续约
1. 可重入
原理#xff1a; 利用Redis的Hash结构#xff0c;记录了使用当前锁的线程id和重用次数#…Redisson分布式锁
主要了解了Redisson分布式锁实现的三个功能 1.可重入 - 防止死锁 2.可重试i.e. 非阻塞获取锁 3.自动续约
1. 可重入
原理 利用Redis的Hash结构记录了使用当前锁的线程id和重用次数避免了可能造成的死锁问题。 存储的锁的内容如下图所示
2. 可重试
不会一直去重试获取锁造成cpu资源的浪费 而是通过pubsub还有信号量的机制实现了只有当别的线程释放锁才会唤醒当前未成功获取锁的线程继续去尝试获取锁 Redis的pubsub机制
信号量
3. 自动续约 看门狗机制
只有当我们不指定leaseTime也就是不指定持有锁的时间长度时才会启动看门狗机制。如下图所示
默认的看门狗机制时把持有锁的剩余时长指定为30秒然后每过leaseTime的1/3默认就是10秒就会重置持有锁的剩余时长为30秒。我们也可以修改Redisson的配置把默认持有锁时长30s改成自己想要的时长。
看门狗机制的实现如下 有个方法(renewExpiration)会启用一个延时任务每次过了 1/3 leastTime时就会重置持有锁的TTL重置完只有然后再调用自己就实现了不断给锁续约的效果。
参考文章
redisson中的看门狗机制总结