SpringCache

Spring提供的一个整合第三方缓存的框架技术——可以使用注解来实现缓存逻辑同时可以切换底层缓存的实现方案

基础使用:SpringCache的基础API已经封装在Spring-startter-web里边提供CacheManager接口来注入对象,所以如果只使用SpringCache默认内置的缓存实现方案不需要在导入额外的坐标,直接使用即可

案例:SpringCache使用Redis作为缓存实现方案

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

1、导入maven坐标

  • spring-boot-starter-data-redis(提供缓存实现方案)

  • spring-boot-starter-cache(提供整合第三方缓存方法)

    image-20230120100032050

    之后CacheManage接口的实现方法就会多出RedisCacheMange

2、配置application.yml

	spring:  
	    cache:  
	        redis:  
	            time-to-live: 1800000#设置缓存有效期

3、在启动类上加入@Enablecaching注解,开启缓存注解功能 4、在Controller的方法上加入@Cacheable、@CacheEvict等注解,进行缓存操作

SpringCache常用注解

首先SpringCache使用Map的形式按分类去管理缓存,使用注解的时候我们最起码需要指定

  • value:缓存的类型(一个业务类型下存储多个键值对,有多个value就有多组缓存类型)
    • key:缓存的键——SpringCache支持动态计算键,SpringCache的注解是否执行怎么执行都通过key去判断
      • 通过方法参数:
        • #p0.id——第0个参数对象的id
        • #user.id——user对象参数的id
        • #root.args[0].id——第0个参数对象的id
      • 通过返回值:
        • #result.id——返回结果对象的id

常用注解:

  • @EnableCaching:开启缓存注解功能(启动类)
  • @CachePut:将方法返回值放入缓存
  • @CacheEvict:将一条或多条数据从缓存中删除
    • allEntries =true——清除分类下所有缓存数据(默认false)
  • @Cacheable:在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中

注解中的条件参数

  • condition——满足条件执行(tip:不能获取result对象
  • unless——不满足条件执行