0

我正在使用 redisson 反应式 Java 客户端。在非反应性客户端中,可以得到一个可过期的信号量:-

RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("mySemaphore");

但是如果我创建一个响应式客户端,我只能找到redisson.getSemaphore("value")函数。我需要 PermitExpirableSemaphore 因为:-

  1. 我需要一个可以由不同线程释放的锁(所以不能使用RLock)。
  2. 我需要一个租约超时来防止死锁,以防获取锁的线程被杀死或卡住。

有没有办法在 Redisson 分布式锁定中实现这种行为?

Edit1:我可以在 Config 中将全局租用时间设置为:- Config().setLockWatchdogTimeout(leaseTimeMs),但我确实需要在不同的锁上使用不同的租用时间。

Edit2 :在https://github.com/redisson/redisson/issues/1391上的 Redisson github 上提出了一个问题

4

1 回答 1

0

正如在edit2中链接的那样,在 Redisson 中没有办法做到这一点。Redisson 的首席开发人员 Nikita 迅速介绍了要求的功能,该功能将在2.11.6.

于 2018-04-16T13:20:03.507 回答