【后端进阶】Spring Boot缓存
缓存
首次查询数据库后,将数据存到缓存中,下次直接从缓存中取数据,效率更高。
使用
App
类上加@EnableCaching
注解。Service
方法上加@Cacheable
注解。
原理
CacheAutoConfiguration
类使用selectImports方法(Return String[]),导入缓存配置类,不同缓存配置在不同条件下生效。- 不同缓存配置注册不同的
CacheManager
,缓存管理器可以获取和创建Cache
,将数据存到不同的缓存组件中。
运行流程
@Cacheable
- Service方法运行前,先根据
CacheNames
查Cache(第一次获取会自动创建(单例))。 - 使用
KeyGenerator
根据对象、方法、参数生成key(可通过SqEL表达式设置)。 - 没有查到缓存则调用目标方法,将目标方法返回结果存入缓存
@CachePut
修改数据库,同时更新缓存。
@CacheEvict
缓存删除。
@Caching
定义复杂缓存规则。
@CacheConfig
作用于整个类。
高级用法
自定义KeyGenerator
- 创建配置类实现
@Bean
方法,重写KeyGeneator
中的generate
方法并返回。 - 在
@Cacheable
中指定keyGenerator
指定CacheManager
略
指定condition
- 在
@Cacheable
中指定condition
或unless
整合Redis
- 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 服务配置
spring.redis.host=127.0.0.1
spring.redis.port=6379
- 自定义序列化器
参考:https://www.jianshu.com/p/5ddd56f8bb83