java - 使用 Redisson 在 Redis 中的信号量上配置 TTL
问题描述
我正在尝试使用 Redisson 获取分布式锁。我已将其范围缩小到一个,RSemaphore
因为关键部分位于响应式流中,并且 Java 的单线程拥有和释放锁的合同在这里不起作用。我遇到的情况是 Redis 中的锁对象的 TTL 为 -1(永不过期)。该信号量用于锁定对象,因此我们的服务集群保持协调,并将创建数千个信号量而无需重入要求。
我一辈子都找不到在信号量对象上设置 TTL 的方法。我看到了许可证到期的选项,但没有看到信号量本身的选项。Zookeeper 在这个环境中不是一个选项,但我知道 ZK 有多种选项可以解决这个问题(ChildReapers
和CreateMode.CONTAINER
)。这似乎是RSemaphore
API 的一个非常基本的要求。
解决方案
我升级了我的 Redisson 库版本以便能够访问该expire()
方法。显然从 3.11.0 (?) 开始的版本具有继承自RExpirable
.
推荐阅读
- java - 使用 Spring 5 下载 PDF 文件时出错
- php - 如何使用 PHP 和 AJAX 将数据绑定到 HTML 下拉列表(用于更改事件)
- reactjs - 仅在首次登录时出现的表单
- angular - 如何让 Ionic 应用程序在 Apache 网络服务器上运行
- android - 从android中的通知调用时异步任务未正确执行
- react-native - JSON解析错误:无法识别的令牌'<'反应原生
- c# - 如何按按钮名称长度调整标签大小
- java - Java一星算法寻路
- database - 如何将值推送到另一个对象或合并对象?
- reactjs - 反应钩子useEffect()清理仅用于componentWillUnmount?