spring @Cacheable 缓存 @CachePut:缓存更新 @CacheEvict:缓存删除 使用详解

参考:

@Cacheable 缓存 @CachePut:缓存更新 @CacheEvict:缓存删除
@Cachable 使用时出现的问题
spring cache 学习 —— @Cacheable 使用详解
无侵入代码方式使用Redis实现缓存功能

总结

@Cacheable 与 @CachePut

@Cacheable 的逻辑是:查找缓存 - 有就返回 -没有就执行方法体 - 将结果缓存起来;
@CachePut 的逻辑是:执行方法体 - 将结果缓存起来;
所以 @Cacheable 适用于查询数据的方法,@CachePut 适用于更新数据的方法。

官方强烈不推荐将 @Cacheable 和 @CachePut 注解到同一个方法

@Override
@Cacheable(value = {"menuById"}, key = "#id")
public Menu findById(String id) {
    Menu menu = this.getById(id);
    if (menu != null){
        System.out.println("menu.name = " + menu.getName());
    }
    return menu;
}

@Override
@CachePut(value = "menuById", key = "#menu.id")
public Menu ReviseById(Menu menu) {
    this.updateById(menu);
    return menu;
}

spring @Cacheable 缓存 @CachePut:缓存更新 @CacheEvict:缓存删除 使用详解_第1张图片

执行ReviseById方法后spring @Cacheable 缓存 @CachePut:缓存更新 @CacheEvict:缓存删除 使用详解_第2张图片

你可能感兴趣的:(#,redis,#,springboot,redis,缓存,spring,boot)