主流的分布式锁的解决方案

分布式锁的问题


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.解锁


他的底层原理:

防止死锁的方法

在添加了过期时间时,时间到了,就会存在一个误删问题,解决方法如下图所示:
