原理
流程说明:
CacheAutoConfiguration => RedisCacheConfiguration =>
自动配置了RedisCacheManager => 初始化所有的缓存 =>
每个缓存决定使用什么配置=>
=>如果RredisCacheConfiguration有就用已有的,没有就用默认配置(CacheProperties)
=>想改缓存的配置,只要给容器中放一个RredisCacheConfiguration即可
=>就会应用到当前RedisCacheManager管理的所有缓存分区中
1、CacheAutoConfiguration
缓存的自动配置,用的类型是redis所以看 RedisCacheConfiguration
2、CacheManager
缓存管理者,类型是redis
所以看 RedisCacheManager
3、CacheProperties
缓存默认配置
4、@CacheEvict
@CacheEvict
是通过AOP实现的,其中核心的类是CacheAspectSupport
一、RedisCacheWriter
1、介绍
RedisCacheWriter
是 Spring Cache 模块(spring-data-redis
)中的一个核心接口,用于实现 Redis 缓存的读写操作,它是 Spring Cache 抽象层与 Redis 实现之间的桥梁。
2、对比RedisTemplate
特性 | RedisTemplate | RedisCacheWriter |
---|---|---|
用途 | 通用 Redis 操作工具类 | Spring Cache 缓存系统内部实现 |
功能 | 提供丰富操作:list、set、zset、hash 等 | 仅用于缓存 get/put/evict 等操作 |
设计目标 | 面向开发者直接调用 | 面向 Spring Cache 框架内部使用 |
是否支持锁机制 | 不支持 | 可选加锁版本 |
3、使用方法
一般你不会自己直接用 RedisCacheWriter
,而是通过配置 RedisCacheManager
使用:
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
RedisCacheWriter cacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofMinutes(30)); // 设置默认 TTL
return new RedisCacheManager(cacheWriter, defaultCacheConfig);
}