我正在使用 Redisson 的 RMapCache 来处理应用程序中的一些分布式集合。这些集合中的密钥应该在一段时间后过期,因此在添加密钥时,我设置了 TTL:RMapCache<String, MyClass> cacheMap = GetMap("test");cacheMap.put("DTO1", myClassInstance, 20, TimeUnit.SECONDS);因此,在 20 秒后,密钥应过期。如果进程在过期时间戳之前未终止,则此方法非常有效。但是,如果由于任何原因进程死亡,则永远不会清除密钥,这意味着逐出由 Java 进程中的 Redisson 处理,而不是由 Redis 本身处理。有没有办法让 Redisson 使用 Redis 的内置 EXPIRE 功能?因此,在 Map 中插入的进程不负责密钥逐出。我发现当前的 redisson 实现非常脆弱。
1 回答
九州编程
TA贡献1785条经验 获得超4个赞
一旦在崩溃后创建了相同的RMapCache对象,它就会启动逐出调度程序,从而从Redis清除过期的条目。
如果只想依靠 Redis 逐出过程,则使用 RBucket 对象。Redis 不提供 TTL 的映射条目过期。
添加回答
举报
0/150
提交
取消