Spring Cache

1、Spring Cache介绍

  • Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
  • Spring Cache提供了一层抽象,底层可以切换不同的Cache实现。具体就是通过 CacheManager 接口来统一不同的缓存技术。
  • CacheManager是Spring提供的各种缓存技术抽象接口

  • 针对不同的缓存技术需要实现不同的CacheManager:
    CacheManager描述
    EhCacheManager使用EnCache作为缓存技术
    GuavaCacheManager使用Google的GuavaCache作为缓存技术
    RedisCacheManager使用Redis作为缓存技术

2、Spring Cache常用注解

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

  • 在Spring Boot项目中,使用缓存技术只需在项目中导入相关缓存技术依赖包,并在启动类上使用@EnableCaching开启缓存支持即可
  • 例如,使用Redis作为缓存技术,只需要导入Spring data Redis的maven坐标即可

3、Spring Cache使用

设置缓存过期时间,如果不设置默认是永久有效

spring:
  cache:
    redis:
      time-to-live: 1800000 #设置缓存数据的过期时间

导入maven坐标

<dependency>
	   <groupId>org.springframework.boot</groupId>
	   <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

实体类需要实现序列化接口(Serializable


注入CacheManager

@Autowired
private CacheManager cacheManager;

@Cacheput

/**
 * CachePut:将方法返回值放入缓存
 * value:缓存的名称,每个缓存的名称下面可以有多个key
 * key:缓存的key
 * @param user
 * @return
 */
@CachePut(value = "userCache",key="#user.id")
@PostMapping
public User save(User user){
    userService.save(user);
    return user;
}

@CacheEvict

/**
 * CacheEvict:清理指定缓存
 * value:缓存的名称,每个缓存的名称下面可以有多个key
 * key:缓存的key
 * @param id
 */
@CacheEvict(value = "userCache",key="#id")
@DeleteMapping("/{id}")
public void delete(@PathVariable Long id){
    userService.removeById(id);
}

@Cacheable

/**
 * @Cacheable:在方法执行前Spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中
 * value:缓存的名称,每个缓存的名称下面可以有多个key
 * key:缓存的key
 * unless:条件,满足条件时才缓存数据
 * @param id
 * @return
 */
@Cacheable(value = "userCache",key="#id",unless = "#result == null")
@GetMapping("/{id}")
public User getById(@PathVariable Long id){
    User user = userService.getById(id);
    return user;
}

4、Redis作为缓存产品

在Spring Boot项目中使用Spring Cache的操作步骤(使用Redis缓存技术)

  • 导入maven坐标

    • spring-boot-starter-data-redis
    • spring-boot-starter-cache
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    
  • 配置application.yml

  • 在启动类上加入@EnableCaching注解,开启缓存注解功能

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴在敲Bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值