SpringCache

SpringCache

前言:Spring Cache 是 Spring Framework 提供的一套 声明式缓存抽象(Declarative Caching) 机制,它允许开发者以非侵入、注解驱动的方式为方法添加缓存功能,从而避免重复计算、减少数据库访问、提升系统性能

1.0 准备

想要使用SpringCache 首先需要导入相关依赖

    <groupId>com.itheima</groupId>
    <artifactId>springcache-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

spring会自动根据你导入的其他依赖来决定你是使用redis还是其他的缓存中间件

1.1 CachePut注解

先在启动类加上对应的注解:

@EnableCaching

来开启缓存相关的其他注解

我们先来学习CachePut注解

该注解放在函数的上面,用于将函数的返回值放到redis缓存中

    // 此时缓存的Key为 cacaheNames::key 的形式 需要和参数名保持一致
    // @CachePut(cacheNames = "userCache",key = "#user.id")
    // 此时缓存的Key也cacaheNames::key 的形式,只不过之前接受的是参数,现在接受的是返回值
    // @CachePut(cacheNames = "userCache",key = "#result.id")
    // 这里使用 #p0 来表示第一个参数,同理,p1表示第二个参数,以此类推,也可也用a0,#root.args[0] 来表示第一个参数
    @CachePut(cacheNames = "userCache" ,key = "#user.id")
    @PostMapping
    public User save(@RequestBody User user){
        userMapper.insert(user);
        return user;
    }

我们缓存操作执行的时间是在函数返回值之后,如果我们设置了进行数据库操作后将id映射回去的话,此时就可以

接收到user在数据库中的id

1.2 Cacheable 注解

该注解用于方法上,一般是查询方法,调用方法时,先在缓存中查是否有想要数据的缓存,如果有就直接返回,如

果没有就利用反射执行原本要执行的方法,并将其结果自动放入缓存

@Cacheable

方法执行前

检查缓存 如果缓存中有数据,直接返回,不执行方法

如果缓存中没有数据,执行方法后将结果放入缓存

    @Cacheable(cacheNames = "userCache",key = "#id")
    @GetMapping
    public User getById(Long id){
        User user = userMapper.getById(id);
        return user;
    }

1.3 CacheEvict

用于清理缓存,默认是在方法执行后执行的,也可也选择在方法执行前清除缓存

@Cacheable(cacheNames = "userCache",key = "#id")
@GetMapping
public User getById(Long id){
    User user = userMapper.getById(id);
    return user;
}

像这样是清理一个缓存

如果想把cahhName下的所有键值对删除

    @CacheEvict(cacheNames = "userCache",allEntries = true)
	@DeleteMapping("/delAll")
    public void deleteAll(){
        userMapper.deleteAll();
    }

这样就可以删除掉所有的缓存

posted @ 2025-10-17 21:08  折翼的小鸟先生  阅读(4)  评论(0)    收藏  举报