我正在尝试使用redisson获取分布式锁。我已经把范围缩小到 RSemaphore
因为关键部分位于一个React流中,java的单线程拥有并释放锁的契约在这里不起作用。我遇到的情况是redis中的lock对象的ttl为-1(永不过期)。这个信号量用于锁定对象,因此我们的服务集群保持协调,并将创建数千个没有可重入需求的信号量。
我一辈子都找不到在信号量对象上设置ttl的方法。我看到了许可证到期的选项,但没有看到信号量本身的选项。zookeeper在这个环境中不是一个选项,但是我知道zk有多种解决这个问题的方法( ChildReapers
以及 CreateMode.CONTAINER
). 这似乎是最基本的要求 RSemaphore
应用程序编程接口。
1条答案
按热度按时间vhipe2zx1#
我升级了redisson库版本,以便能够访问
expire()
方法。显然从3.11.0(?)开始的版本继承了这些方法RExpirable
.