在使用 redis 分布式锁的时候,可能会碰到,服务执行时间比较长,但此时redis锁的过期时间到了,那 redis 会解锁,导致其他服务能同时访问的问题,改如何解决?
只要客户端一旦加锁成功,启动一个watch线程,他是一个后台线程,会每隔10秒检查一下,如果客户端还持有锁key,那么就会不断的延长锁key的生存时间。
假如加锁的时间是30秒,如果加锁的业务没有执行完,那么到 30-10 = 20秒的时候,就会进行一次续期,把锁重置成30秒
在使用 redis 分布式锁的时候,可能会碰到,服务执行时间比较长,但此时redis锁的过期时间到了,那 redis 会解锁,导致其他服务能同时访问的问题,改如何解决?
只要客户端一旦加锁成功,启动一个watch线程,他是一个后台线程,会每隔10秒检查一下,如果客户端还持有锁key,那么就会不断的延长锁key的生存时间。
假如加锁的时间是30秒,如果加锁的业务没有执行完,那么到 30-10 = 20秒的时候,就会进行一次续期,把锁重置成30秒