redisson获取不到锁怎么处理
1.阻塞等待锁释放:redisson有waitTimeout参数控制锁等待时间,当某线程获取不到锁时,会进入阻塞状态等待锁释放或超过设置的时间
2.tryLock会根据参数直接返回或者抛出异常。
tryLock一般有两种:
一种是不带参数的,这种不会阻塞,锁可用就返回true,锁不可用就返回false。
一种是带有时间参数的
boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
在等待时间内,锁会一直自旋尝试获取锁,如果获取成功,那就直接返回true;如果等待时间内都没有获取锁,那就返回false。
抛出异常的情况是当前线程被中断
redisson关于业务未处理完,锁又被其他用户获取了怎么解决
开启watchDog,数据只能手动干预吧,这个问题对我来说真的不好回答
redis机器发生了时间跳变,对锁的影响和出现的情况,如何应对
如果时间跳回去了那就会导致原本该过期的锁未过期,会导致其他资源需要锁的时候无法使用
如果时间跳过去了那就会导致锁过早的失效,很容易发生上面那个业务未处理完锁被其他用户获取了的问题
不论如何时间跳变很可能会导致数据不一致、数据被破坏的问题
解决方法同样是加watchDog,业务未完成的状态下自动续期还是很重要的
redis会出现锁误删的情况吗
会。锁唯一标识冲突的时候;锁续约时出现异常的情况下
解决办法依旧是使用watchDog
标签:返回,redisson,要用,获取,等待时间,tryLock,watchDog From: https://www.cnblogs.com/kun1790051360/p/18662560