因运用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原理,实现了基于注解的缓存功能,只需要简单地加一个注解就能实现缓存功能,对业务代码的侵入性很小。
- 基于SpringBoot使用Spring Cache非常简单,首先加入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> <version>2.7.10</version> </dependency> - 然后编写相关配置类代码
简单认识它的常用注解:
@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值