使用 Redisson 在 Redis 中的信号量上配置 TTL



我正在尝试使用 Redisson 获取分布式锁。我已将其缩小到一个RSemaphore,因为关键部分位于响应式流中,并且 Java 的单个线程拥有和释放锁的合约在这里不起作用。我遇到的情况是 Redis 中的锁定对象的 TTL 为 -1(永不过期(。此信号量用于锁定对象,以便我们的服务集群保持协调,并将创建数千个信号量,而无需重入。

我一生都找不到在信号量对象上设置 TTL 的方法。我看到许可证到期的选项,但没有看到信号量本身的选项。Zookeeper 在这种环境中不是一个选项,但我知道 ZK 有多种选择来解决这个问题(ChildReapersCreateMode.CONTAINER(。这似乎是RSemaphoreAPI 的一个非常基本的要求。

我升级了我的Redisson库版本,以便能够访问expire()方法。显然,从 3.11.0 (?( 开始的版本具有从RExpirable继承的方法。

最新更新