flowchart TD
subgraph 问题场景
A[大量请求] --> B{缓存命中?}
B -->|否| C[缓存击穿]
C --> D[(数据库压力骤增)]
D --> E[系统响应变慢]
end
subgraph 解决方案
F[方案1:互斥锁]
G[方案2:热点数据永不过期]
H[方案3:提前预热]
I[方案4:布隆过滤器]
end
F --> J[Redis分布式锁]
J --> K[单个线程更新缓存]
K --> L[其他线程等待]
G --> M[定时任务更新]
M --> N[缓存永不过期]
I --> O[过滤不存在Key]
O --> P[避免无效DB查询]
flowchart TD
subgraph 分布式锁机制
A[获取分布式锁] --> B[Redis SET NX]
B --> C{锁获取成功?}
C -->|是| D[查询数据库]
C -->|否| E[等待重试]
E --> F[重试次数判断]
F -->|未超过| A
F -->|超过| G[返回降级数据]
D --> H[更新缓存]
H --> I[释放锁]
I --> J[返回数据]
end
subgraph 热点数据保护
K[热点数据识别] --> L[访问频率统计]
L --> M[阈值判断]
M -->|热点| N[永不过期标记]
N --> O[定时任务主动更新]
O --> P[缓存预热]
Q[热点数据隔离] --> R[独立缓存实例]
R --> S[更高规格配置]
end
subgraph 互斥更新策略
T[缓存过期检测] --> U[互斥标记]
U --> V[检查更新状态]
V -->|正在更新| W[等待更新完成]
W --> X[直接返回旧数据]
V -->|未在更新| Y[设置更新标记]
Y --> Z[执行更新]
Z --> AA[清除更新标记]
AA --> AB[返回新数据]
end
subgraph 请求合并优化
AC[请求到达] --> AD[请求队列]
AD --> AE[延迟等待]
AE --> AF[批量请求合并]
AF --> AG[单次数据库查询]
AG --> AH[结果分发]
AH --> AI[返回给所有请求]
end
subgraph 多级缓存架构
AJ[一级缓存] --> AK[本地缓存]
AK --> AL[热点数据优先]
AM[二级缓存] --> AN[分布式缓存]
AN --> AO[数据备份]
AP[三级存储] --> AQ[数据库]
AQ --> AR[主从架构]
end
subgraph 监控预警系统
AS[监控指标] --> AT[热点Key识别]
AT --> AU[缓存命中率]
AU --> AV[数据库访问频率]
AW[预警机制] --> AX[热点检测告警]
AX --> AY[自动预热触发]
AY --> AZ[扩容建议]
end
A --> K
K --> T
T --> AC
AC --> AJ
AJ --> AS