我正在使用 redisson 反应式 Java 客户端。在非反应性客户端中,可以得到一个可过期的信号量:-
RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("mySemaphore");
但是如果我创建一个响应式客户端,我只能找到redisson.getSemaphore("value")
函数。我需要 PermitExpirableSemaphore 因为:-
- 我需要一个可以由不同线程释放的锁(所以不能使用
RLock
)。 - 我需要一个租约超时来防止死锁,以防获取锁的线程被杀死或卡住。
有没有办法在 Redisson 分布式锁定中实现这种行为?
Edit1:我可以在 Config 中将全局租用时间设置为:- Config().setLockWatchdogTimeout(leaseTimeMs)
,但我确实需要在不同的锁上使用不同的租用时间。
Edit2 :在https://github.com/redisson/redisson/issues/1391上的 Redisson github 上提出了一个问题