java - 如果进程终止,Redisson Cache Map 不会逐出

标签 java redis redisson

我正在使用 Redisson 的 RMapCache在我的应用程序中处理一些分布式集合。

这些集合中的键应该在一段时间后过期,所以在添加键时我设置了 TTL:

RMapCache<String, MyClass> cacheMap = GetMap("test");
cacheMap.put("DTO1", myClassInstance, 20, TimeUnit.SECONDS);

所以 20 秒后 key 应该过期。如果进程未在到期时间戳之前终止,则此方法非常有效。但是,如果进程由于任何原因终止,则 key 永远不会被清除,这意味着驱逐由 Java 进程内的 Redisson 处理,而不是由 Redis 本身处理。

有没有办法让redisson使用Redis内置的EXPIRE功能?因此,插入 Map 的进程不负责键驱逐。

我发现当前的 redisson 实现极其脆弱。

最佳答案

一旦您在崩溃后创建相同的 RMapCache 对象,它就会启动 evictionScheduler,后者会从 Redis 中清除过期的条目。

如果你只想依赖 Redis 的驱逐过程,那么使用 RBucket 对象。 Redis 不提供按 TTL 的映射条目过期时间。

关于java - 如果进程终止,Redisson Cache Map 不会逐出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55126579/

相关文章:

Java SAAJ 基本身份验证

java - Altbeacon,如何处理找不到信标的情况? if (beacons.size() > 0) { 的 else 语句

java - 无法在java程序中导入RClusteredMap

multithreading - Redisson 客户端 - 线程安全

java - 如何在spring中接收动态生成的输入值作为bean

java - 更改 Naturald 参数名称后出错

c# - 将 ServiceStack ICacheClient 与 Redis 和 Ninject 结合使用

python - Openshift 墨盒部署到错误/旧应用程序

mysql - 更快的redis数据迁移到MySQL的方法

java - 如何使用 RedissonSessionManager 设置 redis "session key prefix"