【问题标题】:How to update time-to-live of an entry using Redisson client in Java?如何使用 Java 中的 Redisson 客户端更新条目的生存时间?
【发布时间】:2021-01-08 11:50:15
【问题描述】:

假设我想使用 RMapCacheReactive 和 Redisson 在 Redis 中存储一个对象 A
一开始,我通过键 B 将其放入具有 10 000 毫秒 TTL 的映射中。在那之后,我通过相同的键 B 放置相同的对象 A,但 TTL 为零。
根据文档, put 方法“存储由键映射的具有指定生存时间的值”,所以我的期望是 A 将永久存储在该映射中。
然而,它实际上在 10 000 毫秒过去后被删除(使用 Redisson 客户端无法获取它)。 是不是我做错了什么?

我在 3.13.4 和 3.12.5 版本的 Redisson 上检查了此行为。

【问题讨论】:

  • 您是否尝试将 TTL 设置为 -1?
  • RMapCacheReactive 没有这样的方法。即使它有,在我用新的 TTL 用同一个键输入一个新值后,不应该自动更改 TTL 吗?
  • 这就是我所说的使用 ttl=0 不太可能,因为它没有更新密钥 ttl=0 表示该密钥没有生命周期,-1 表示无限。
  • 根据文档,0 表示无穷大(“@param ttl - 键\值输入的生存时间。如果 0 则无限存储。”)。如果我尝试使用 -1 而不是零,我会得到一个异常“Caused by: java.lang.IllegalArgumentException: ttl can't be negative”

标签: java redis redisson


【解决方案1】:

我在 GitHub https://github.com/redisson/redisson/issues/3078 上报告了这个问题。原来这是一个应该在下一个版本(3.13.5)中修复的错误。

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 2020-12-14
    • 2020-08-04
    • 2015-12-20
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2019-01-15
    相关资源
    最近更新 更多