主流的分布式锁的解决方案
分布式锁的问题
redisson分布式锁底层原理
RedissonConfig使用
RedissonConfig配置文件
Redisson分布式锁
什么是Redisson
锁误删问题
防死锁,设置过期时间
什么是死锁
setnx加锁,for循环
SETNX指令加锁、解锁
单机锁(JVM锁)的两种方式
分布式锁原子性111
好处11111111
config1111111
reddisson11111111
误删除问题111111
分布式锁11111111
分布式锁1111111
失效情况111111
redisson配置类
单机模式
分布式锁的使用场景
Redission使用lua脚本实现,防误删,死锁等问题
为什么用分布式锁?
集群部署情况下,单机锁无法保证外部资源的访问安全性。
分布式锁的类型:
使用数据库自带的锁(悲观锁,乐观锁)实现,适用于并发量较小的场景
使用zookeeper分布式锁
使用Redisson分布式锁
Redis分布式锁怎么防止死锁问题?
什么是死锁?比如有三个线程A,B,C,当线程A获取到锁之后,由于某些原因线程A挂了,此时线程A无法释放锁,导致了线程B,线程C无法获取到锁,就会导致死锁发生。
解决方案:给锁设置过期时间expire (+ 自动续期)
Redis分布式锁怎么防止误删?
什么情况下会产生分布式锁中的误删?所谓的误删就是锁的过期时间设置的不准确,在线程A还没有执行完之前,锁的过期时间就到了,锁被提前删除了,其他线程B获取到了这把锁。此时线程A执行完毕了,它把线程B的锁给误删了,从而导致误删问题的出现。
解决方案:使用UUID设置锁的value,删之前判断一下,是不是自己的锁,是就删除,不是就不删除。
111111111111111111111111111111111111111111111111111111111111111111111111111112222
分布式布局真的号好好好哈
fbs
Redisson分布式锁:
这是配置类
然后再ctl中去使用
1.获取锁
2.加锁
3.解锁
他的底层原理:
防止死锁的方法
在添加了过期时间时,时间到了,就会存在一个误删问题,解决方法如下图所示: