You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redisson RLocalCachedMap失效后此前get返回的集合是否会变化?

结论

你的推测完全正确,已经赋值的myCollection对象不会受到后续缓存失效、更新操作的影响,会始终保留你调用rCacheMap.get(key)那一刻的取值。

具体原因

  • Redisson的RLocalCachedMap的get操作返回的是值对象的普通引用,不属于和缓存层绑定的实时代理对象,也不在Redisson活对象的管理范围内——活对象仅针对通过@REntity注解声明、由Redisson专门托管的实体类,普通缓存值不受该机制影响。
  • TTL过期、INVALIDATE失效策略触发的缓存删除/更新操作,只会修改RLocalCachedMap内部的本地缓存存储、以及Redis服务端的对应数据,不会反向修改你已经通过get操作拿到的、存放在JVM堆内存中的独立对象。
  • 只有再次调用rCacheMap.get(key)时,Redisson才会校验本地缓存是否有效,若已失效会从Redis拉取最新数据并反序列化为新的对象返回。

补充建议

如果你的业务逻辑中会修改拿到的myCollection集合本身的内容,建议先做深拷贝再操作:因为本地缓存命中时get会返回缓存中对象的直接引用,直接修改会污染同进程内后续其他调用拿到的缓存值,直到缓存失效刷新。如果只是读取集合内容,不需要做额外拷贝,不会有任何副作用。


内容的提问来源于stack exchange,提问作者spekdrum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:57:00