1、缓存-分布式锁-Redisson-lock看门狗原理-redisson如何解决死锁
https://www.pianshen.com/article/82441844942/
2、Redisson 分布式锁实战与 watch dog 机制解读
https://blog.51cto.com/15018721/2647285
3、redisson的WatchDog是如何看家护院的
https://blog.csdn.net/ice24for/article/details/86177152
4、Redisson(1)分布式锁——如何解决死锁问题
https://blog.csdn.net/xxcupid/article/details/88120581
public String hello(){
//获取一把锁,只要锁的名字一样就是同一把锁
RLock lock = redisson.getLock("my-lock");
//2。加锁
// lock.lock();
//1).redisson的自动续期,如果业务超长,运行期间自动续上30s,不用担心业务时间长,锁自动过期被删掉
//2).加锁得业务只要运行完成,就不会给当前锁续期,即使不手动解锁,锁默认在30s后自动删除
lock.lock(10, TimeUnit.SECONDS);//10秒以后自动解锁,自动解锁时间一定要大于业务时间
// lock.lock(10, TimeUnit.SECONDS)在锁时间到了以后,不会自动续期
//1.如果我们传递了锁的超时时间,就发送给redis执行脚本,进行占锁,默认时间就是我我们传递的时间
//2.如果我们未指定锁的超时时间,就使用lockWatchdogTimeout = 30 * 1000;看门狗默认时间
//只要占锁成功,就会启动定时任务(重新给锁设置过期时间)新的时间就是看门狗的默认时间,每10秒,都会自动续期续成满时间
//最佳实战
//1)lock.lock(10, TimeUnit.SECONDS) 省略了整个续期操作,手动解锁
try {
System.out.println("加锁成功,执行业务"+lock.getName());
Thread.sleep(30000);
} catch (Exception e){
System.out.println(e);
} finally{
//解锁
System.out.println("释放锁"+lock.getName());
lock.unlock();
}
return "hello";
}
参考:https://blog.csdn.net/weixin_43691942/article/details/107591137
5、为什么用分布式锁?
https://cloud.tencent.com/developer/article/1469103
6、分布式锁的三种实现方式是什么
https://www.php.cn/faq/466231.html
7、分布式 - 分布式锁的场景与实现
https://www.jianshu.com/p/bb8c6c3113dd
8、redis分布式锁原理及实现 (10W+阅读)
https://blog.csdn.net/shuangyueliao/article/details/89344256