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();
}
这样就可以删除掉所有的缓存

浙公网安备 33010602011771号