Spring cache
Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现。
例如:EHCache,Caffeine,Redis
导入坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
常用注解
- @EnableCaching:开启缓存注解功能,通常加在启动类上
- @Cacheable:则直接返回缓存数据;如果在方法执行前先查询缓存中是否有数据,如果有数据没有缓存数据,调用方法并将方法返回值放到缓存中
- @CachePut:将方法的返回值放到缓存中
- @CacheEvict:将一条或多条数据从缓存中删除
@EnableCaching
放到启动类上即可
@CachePut
一般放在Controller中的方法前面
cacheNames:cache的名称,名称要做到见名知意
key:要保存的值(注意参数名保持一致,key的写法,有5种)
冒号表示层级结构
redis里key为:cacheNames::user的id
value为:一个user对象(函数的返回值)
@Cacheable
一般放在Controller中的方法前面
在缓存中查找,有没有相应的数据,有直接返回,如果没有,执行后面的查询数据库操作,再将数据加入到缓存。
在redis中的key为:userCache::参数里的id值
value为:函数的返回值,即一个user对象
@CacheEvict
//通过id删除
@CacheEvict(cacheNames = "userCache",key = "#id")
//批量删除
@CacheEvict(cacheNames = "userCache",allEntries = true)