Redison看门狗机制

Redison提供了看门狗机制实现Redis分布式锁的自动续期。

//1、获取一把锁,只要锁的名字一样,就是同一把锁
RLock lock = redisson.getLock("my-lock");

//2、加锁
lock.lock(30,TimeUnit.SECONDS); // 省掉了整个续期操作。手动解锁
lock.lock(); //默认加的锁都是30s时间。看门狗机制自动续期。

如上,Redison加分布式锁的两个重载方法。

方法一:

lock.lock(30,TimeUnit.SECONDS);
  • 我们传递了锁的超时时间,就发送给redis执行脚本,进行占锁,默认超时就是我们指定的时间。
  • 在锁时间到了以后,不会自动续期。

方法二 (看门狗机制)

lock.lock();
  • 如果我们未指定锁的超时时间,就使用30 * 1000(LockWatchdogTimeout看门狗的默认时间);
  • 只要占锁成功,就会启动一个定时任务,每隔10s (看门狗时间 / 3)都会自动再次续期,续成30s;
  • 加锁的业务只要运行完成,就不会给当前锁续期,即使不手动解锁,锁默认在30s以后自动删除。

你可能感兴趣的:(java,redis)