首页 > 其他分享 >Spring Cache

Spring Cache

时间:2023-01-08 17:55:05浏览次数:37  
标签:缓存 Spring Cache user key id

Spring Cache

1、Spring Cache 介绍

Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能。

Spring Cache 提供一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager 接口来统一不同的缓存技术

CacheManager 是spring 提供的各种缓存技术的抽象接口

image-20230108164316148

2、Spring Cache 常用注解

注解 说明
@EnableCaching 开启缓存注解功能
@Cacheable 在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回数据;若没有数据,调用方法并将方法返回值放进缓存中。
@CachePut 将方法的返回值放入缓存中
@CacheEvict 将一条或多条数据从缓存中删除

在spring boot 项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类使用@EnableCaching开启缓存支持即可

例如,使用Redis作为缓存技术,只需要导入Spring data Redis 的maven坐标即可

3、注解使用

CachePut:通常用于新增数据时刻

/**
* value: 缓存的名称,每个缓存名称下面有多个key
* key:缓存的key 可以使用 #result.id 代表的是返回值的user的id,也可以使用#root,method代表使用方法名,还可以使用#user.name代表使用参数的name属性
*/
@Cacheput(value = "userCache", key = "#user.name")
@PostMapping
public User save(User user){
    userService.save(user);
    return user;
}

CacheEvict :通常用于删除和修改数据时刻

// 删除数据
@CacheEvict(value = "userCache", key = "#id")
@DeleteMapping("/{id}")
public void delete(@PathVariable Long id){
    userService.removeById(id);
}

// 修改数据
@CacheEvict(value = "userCache", key = "#user.id")
@PostMapping
public User update(User user){
    userService.updateById(id);
    return user;
}

Cacheable:通常用于查找数据时刻

// condition 表示 返回结果不为null的时候在加入缓存,若为null则不加入缓存
@Cacheable(value = "userCache", key = "#id", condition = "#result != null")
@GetMapping("/{id}")
public User getById(@PathVariable Long id){
    return userService.getById(id);
}

4、使用Redis缓存技术

  1. 导入maven坐标
    spring-boot-starter-data-redis、spring-boot-starter-cache

  2. 配置application.yml

    spring:
    	cache:
    		redis:
    			time-to-live: 1800000 # 设置缓存有效期
    
  3. 在启动类上加上@EnableCaching 注解,开启缓存功能

  4. 在Controller的方法上加入@Cacheable等注解,进行缓存操作

标签:缓存,Spring,Cache,user,key,id
From: https://www.cnblogs.com/freshman-me/p/17034995.html

相关文章