简介
SpringCache整合Redis可以使用Spring提供的@Cacheable注解来实现对Redis的缓存操作。使用这种方式可以轻松地在应用程序中启用缓存,并且不需要手动编写访问Redis的代码。在配置文件中需要配置Redis的连接信息以及缓存管理器。使用这种方式可以做到轻松配置,易维护。
Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如:
-
EHCache
-
Caffeine
-
Redis(常用)
我们只需要导入对应数据库依赖即可切换不同的数据库,这里使用redis,所以我们还需要导入redis的依赖。
使用
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<version>2.7.3</version>
</dependency>
在application.yml中配置redis信息
spring:
redis:
host: xxxxxx
port: 6379
password: xxxxxx
database: 1
在SpringCache中提供了很多缓存操作的注解,常见的是以下的几个:
注解 | 说明 |
---|---|
@EnableCaching | 开启缓存注解功能,通常加在启动类上 |
@Cacheable | 在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中 |
@CachePut | 将方法的返回值放到缓存中 |
@CacheEvict | 将一条或多条数据从缓存中删除 |
1.@EaableCaching加在启动类上,其作用就是开启缓存注解驱动。
2.@Cacheable加在方法上,其作用就是添加数据到缓存中和从缓存中获取数据,通常使用在查询方法上。
测试
cacheNames表示数据在缓存中key的前缀名,key表示缓存中key的后缀。
key的值的格式为下:
#result表示最终return的数据。
此时的步骤就是:先到缓存中查询,如果存在该对应的数据就直接将数据返回给客户端,就连getById都不会执行,如果不存在就会执行getById方法,最终再将查询的数据按照格式存入缓存中。
3.@CachePut,其作用就是将数据保存到数据库的同时将将数据也缓存到缓存中,一般用在新增方法上。
测试
结果为下:
4.@CacheEvict,其作用就是将一条或多条数据从缓存中删除。
测试
这里的功能是删除所有用户数据的缓存,如果需要删除指定的用户数据,可以在@CacheEvict中设置key的属性值。
结果为下:
总结
springCache底层本质还是redis这种非关系型数据库来做缓存,通过对应的注解大大减少了我们的开发时间。(本质上还是使用redis做缓存)