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: 满足条件满足

posted @ 2023-01-31 21:28  SpecialSpeculator  阅读(76)  评论(0编辑  收藏  举报