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

Spring Boot中@CachePut注解是否会替换Data Grid中已存在的对应Key?

@CachePut 对Data Grid同Key缓存的处理逻辑

核心结论

默认配置下,@CachePut 会直接用新生成的同Key值,覆盖Data Grid中已存在的对应缓存条目。


具体逻辑说明

  • @CachePut 的设计目标就是强制更新缓存:和@Cacheable「缓存不存在才执行方法并存入」的逻辑不同,@CachePut 注解修饰的方法每次都会正常执行,最终会把方法返回值强制写入指定缓存命名空间下的对应Key,不管该Key之前是否已经有缓存值。
  • Spring Cache是抽象缓存层,只要你集成的Data Grid实现(比如Redis、Infinispan等)适配了Spring Cache规范,同Key的写入操作默认就是覆盖逻辑,无需额外配置。
  • 如果你需要避免同Key缓存被覆盖,可以自定义CacheManager的写入规则,或者在底层缓存组件侧配置写入限制(比如Redis的NX写入参数),但这属于非默认的自定义改造,不符合@CachePut的常规使用场景。

常规使用示例

// 更新用户信息后同步刷新缓存
@CachePut(value = "userCache", key = "#userId")
public User updateUserInfo(Long userId, UserUpdateDTO updateDTO) {
    // 执行数据库用户信息更新逻辑
    User updatedUser = userMapper.update(userId, updateDTO);
    // 返回值会自动写入userCache下key为userId的缓存,覆盖原有值
    return updatedUser;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:09:03