Redisson:为什么反应式客户端没有 PermitExpirableSemaphore?
Redisson: Why reactive client doesn't have PermitExpirableSemaphore?
我正在使用 redisson 反应式 Java 客户端。在非反应性客户端中,可以获得一个可过期的信号量:-
RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("mySemaphore");
但是如果我创建一个响应式客户端,我只能找到 redisson.getSemaphore("value")
函数。我需要 PermitExpirableSemaphore 因为:-
- 我需要一个可以被不同线程释放的锁(所以不能使用
RLock
)。
- 我需要一个租用超时来防止死锁,以防获取锁的线程被杀死或卡住。
有没有办法在 Redisson 分布式锁中实现这种行为?
Edit1:我可以在 Config 中将全局租用时间设置为:- Config().setLockWatchdogTimeout(leaseTimeMs)
,但我确实需要在不同的锁上使用不同的租用时间。
Edit2:在 Redisson github https://github.com/redisson/redisson/issues/1391
上问了一个问题
如 edit2 中所链接,在 Redisson 中无法做到这一点。 Redisson 的首席开发人员 Nikita 迅速介绍了要求的功能,该功能将于 2.11.6
。
发布
我正在使用 redisson 反应式 Java 客户端。在非反应性客户端中,可以获得一个可过期的信号量:-
RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("mySemaphore");
但是如果我创建一个响应式客户端,我只能找到 redisson.getSemaphore("value")
函数。我需要 PermitExpirableSemaphore 因为:-
- 我需要一个可以被不同线程释放的锁(所以不能使用
RLock
)。 - 我需要一个租用超时来防止死锁,以防获取锁的线程被杀死或卡住。
有没有办法在 Redisson 分布式锁中实现这种行为?
Edit1:我可以在 Config 中将全局租用时间设置为:- Config().setLockWatchdogTimeout(leaseTimeMs)
,但我确实需要在不同的锁上使用不同的租用时间。
Edit2:在 Redisson github https://github.com/redisson/redisson/issues/1391
上问了一个问题如 edit2 中所链接,在 Redisson 中无法做到这一点。 Redisson 的首席开发人员 Nikita 迅速介绍了要求的功能,该功能将于 2.11.6
。