Redis缓存架构
引用文件
目录
简介
本文件面向 yudao-cloud 的 Redis 缓存架构,系统性阐述多级缓存策略(本地缓存 + 分布式缓存 + 布隆过滤器)、缓存键命名规范、过期策略与随机抖动、缓存一致性与预热、穿透/击穿/雪崩防护、监控与运维要点。文档以仓库现有实现为依据,结合配置与工具类进行说明,并提供可视化图示帮助理解。
项目结构
围绕 Redis 的核心实现集中在 yudao-spring-boot-starter-redis 模块,配套的本地缓存工具位于 yudao-common,缓存一致性事件通过 yudao-module-rule 的 LocalCacheClearEvent 与 RuleUtil/RulesApiUtil 广播。
图表来源
- YudaoRedisAutoConfiguration.java
- YudaoCacheAutoConfiguration.java
- TimeoutRedisCacheManager.java
- YudaoCacheProperties.java
- BloomFilterUtils.java
- CacheUtils.java
- LocalCacheClearEvent.java
- RuleUtil.java
- RuleApiUtil.java
章节来源
核心组件
- RedisTemplate/RedissonClient:统一的 JSON 序列化、连接工厂与 Redisson 客户端配置。
- RedisCacheConfiguration/Manager:集中式缓存配置与前缀策略,支持自定义过期时间。
- TimeoutRedisCacheManager:在缓存名中通过“#ttl”语法动态覆盖过期时间。
- YudaoCacheProperties:扫描批大小、随机过期抖动参数。
- BloomFilterUtils:基于 Redisson 的布隆过滤器工具,支持分区与批量操作。
- CacheUtils:本地缓存 LoadingCache 构建与异步刷新。
- LocalCacheClearEvent + RuleUtil/RuleApiUtil:通过 Spring Cloud Bus 广播本地缓存清理事件,实现多实例一致性。
章节来源
- YudaoRedisAutoConfiguration.java
- YudaoCacheAutoConfiguration.java
- TimeoutRedisCacheManager.java
- YudaoCacheProperties.java
- BloomFilterUtils.java
- CacheUtils.java
- LocalCacheClearEvent.java
- RuleUtil.java
- RuleApiUtil.java
架构总览
yudao-cloud 的缓存采用“本地缓存 + 分布式缓存 + 布隆过滤器”的多级策略:
- 本地缓存:Guava/Caffeine,降低热点数据的远程访问压力。
- 分布式缓存:Spring Cache + Redis,统一序列化与 TTL 策略。
- 布隆过滤器:在高并发读场景前置过滤,避免无效的后端查询。
- 一致性:通过 Spring Cloud Bus 广播本地缓存清理事件,确保多实例一致。
图表来源
组件详解
Redis 配置与序列化
- RedisTemplate 使用 String 序列化键值,VALUE 使用 JSON(Jackson + JavaTimeModule),保证 LocalDateTime 等时间类型的正确序列化。
- RedissonClient 通过 JsonJacksonCodec 配置,支持 Java 8 日期时间类型。
- RedissonClient 默认单机模式,地址来自 spring.redis.* 配置。
章节来源