SpringCache
SpringCache
简化缓存操作代码
是一个框架,实现了基于注解的缓存功能,只需要简单的添加注解,就能实现缓存功能
SpringCache提供了一种抽象,底层可以切换不同的cache实现,具体通过CacheManager接口来统一不同的缓存技术
CacheManager是Spring提供的各种缓存技术的抽象接口
RedisCacheManager,使用redis作为缓存技术
依赖于spring-context包里的api
注解说明
注解 | 说明 |
---|---|
EnableCaching | 开启注解缓存功能 |
Cacheable | 执行前spring先查看是否有数据,如果有数据,则直接返回缓存数据,没有数据则调用方法,返回值放入缓存中 |
CachePut | 方法的返回值放入到缓存中 |
Cacheable | 将一条或多条数据中缓存中删除 |
依赖包
spring-data-redis 依赖包
CachePut注解,放入缓存
方法的返回值放入缓存汇总
value属性,代表缓存的名称,一类缓存
key,代表缓存的key
@CachePut(value="userCache",key = "#user.id")
@PostMapping
public User save(User user){
userService.save(user)
return user
}
key用spel表达式
CacheEvict 注解,清理缓存
用来删除缓存
@CacheEvict(value = "userCache",key = "#id")
@DeleteMapping("/{id}")
public void delete(@PathVariable Long id){
userService.removeById(id);
}
Cacheable注解
@Cacheable(value="userCache",key="#id",condition="#result != null")
@GetMapping("/{id}")
public User getById(@PathVariable Long id){
User user = userService.getById(id);
return user;
}
不同的查询条件,不同的返回数据
@Cacheable(value="userCache",key="#user.id + '_' + #user.name "",condition="#result != null")
@GetMapping("/{id}")
public List<User> list(User user){
List<User> users = userService.list(queryWrapper);
return users;
}
底层使用redis作为缓存
spring-boot-starter-data-redis
spring-boot-starter-cache
配置redis
spring:
redis:
cache:
redis:
time-to-live: 1800000
unless: 满足条件不满足
condition: 满足条件满足
原创:做时间的朋友