SpringCache入门(未完待续)

98 阅读2分钟

因运用Redis的缘故,学习SpringCache的使用,先介绍一下Redis访问工具

Redis访问工具

常用的有Jedis和Letture两个访问redis的客户端库,其中Lettuce的性能和并发性要好一些,Spring Boot默认使用的是Lettuce作为Redis的客户端。

说到我用到的是Spring data redis框架,在项目中就可以用RedisTemplate访问Redis,RedisTemplate提供了方便访问redis的模板方法。

当然主角是Spring Cache,Spring Cache是spring的缓存框架,可以集成各种缓存中间件,比如:EhCache,Caffeine、redis。

其实无论Spring Cache还是RedisTemplate都是通过Lettuce客户端与Redis进行信息通讯的。

使用Spring Cache的方法很简单,只需要在方法上添加注解即可实现将方法返回数据存入缓存,以及清理缓存等注解的使用。

RedisTemplate使用于灵活操作redis的场景,通过RedisTemplate的API灵活访问Redis。

Spring Cache基本介绍

Spring Cache是Spring提供的一个缓存框架,基于AOP原理,实现了基于注解的缓存功能,只需要简单地加一个注解就能实现缓存功能,对业务代码的侵入性很小。

  1. 基于SpringBoot使用Spring Cache非常简单,首先加入依赖
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
        <version>2.7.10</version>
    </dependency>
    
  2. 然后编写相关配置类代码

简单认识它的常用注解:

@EnableCaching: 开启缓存注解功能,这里一般都是在SpringApplication.class 启动类上配置此注解

@Cacheable:查询数据时缓存,将方法的返回值进行缓存。

Cacheable注解配置的参数说明:

value:缓存的名称,缓存名称作为缓存key的前缀。

key:缓存key,支持SpEL表达式,上述代码表示取参数id的值作为key,最终缓存key为:缓存名称 + "::" + key

@Cacheable(value = "beiqian", key = "123)
所以最终在redis数据库中存在的key为:beiqian::123

SpEL(Spring Expression Language)是一种Spring框架中用于处理字符串表达式的强大工具,它可以实现获取对象的属性,调用对象的方法操作。

keyGenerator: 指定一个自定义的键生成器(实现org.springframework.cache.interceptor.KeyGenertor接口的类),用于生成缓存的键。与key属性互斥,二者只能选其一。

@CacheEvit:用于删除缓存,将一条或多条数据从缓存中删除。

@CachePut: 用于更新缓存,将方法的返回值放到缓存中

@Caching:组合多个缓存注解;

@CacheConfig:统一配置@Cacheable中的value值