推荐链接:
总结——》【Java】
总结——》【Mysql】
总结——》【Redis】
总结——》【Kafka】
总结——》【Spring】
总结——》【SpringBoot】
总结——》【MyBatis、MyBatis-Plus】
总结——》【Linux】
总结——》【MongoDB】
总结——》【Elasticsearch】
Redis——》如何评估锁过期时间
- 一、锁过期的场景
- 二、锁过期的解决方案
- 方案1:尽量冗余过期时间
- 方案2:加入看门狗守护线程
一、锁过期的场景
key的失效时间是10s,但是客户端C在拿到分布式锁之后,然后业务逻辑执行超过10s,那么问题来了,在客户端C释放锁之前,其实这把锁已经失效了,那么客户端A和客户端B都可以去拿锁,这样就已经失去了分布式锁的功能了!!!
二、锁过期的解决方案
方案1:尽量冗余过期时间
降低锁提前过期的概率,但这个方案并不能完美解决问题。
方案2:加入看门狗守护线程
加锁时,先设置一个预估的过期时间,然后开启一个守护线程,定时去检测这个锁的失效时间,如果锁快要过期了,操作共享资源还未完成,那么就自动对锁进行续期,重新设置过期时间。这个守护线程我们一般把它叫做看门狗线程。