Redis的过期时间是防止死锁,但是出现了业务未完成自动释放锁的情况;
这时,redisson设计了看门狗的机制解决了自动释放锁的情况,但是出现了不断续租造成死锁的情况;
两者貌似不能兼得?
1.使用Redisson锁时,业务逻辑执行完后,释放锁的操作要放到finally{},保证一定执行释放锁的方法。
2.如果释放锁方法本身异常了,也会有cancelExpirationRenewal()方法确保停止watch dog机制,保证redis有效期过了后会自动释放锁。
3.另外,Redisson锁还存在主从复制的坑,就是主节点加锁成功后没有将数据同步到从节点就挂了,这时会出现数据异常,可以通过redlock解决。