适用场景
缓存用好了是性能利器,用不好就是事故来源:缓存雪崩打穿数据库、热点 key 打满单节点、数据不一致引发业务纠纷。
配置步骤(穿透 / 击穿 / 雪崩防护)
# 空值缓存(防穿透)
SET user:999999 "__NULL__" EX 300
# 互斥锁重建(防击穿)
SET lock:user:1 1 NX EX 10
# 过期抖动(防雪崩)
EX 3600 + random(0..300)
关键参数与建议
- 分层:本地缓存(进程内)+ 分布式缓存(Redis),热点数据本地兜底
- 穿透:空值缓存 + 布隆过滤器,防止无效请求打到底层
- 击穿:互斥锁或逻辑过期,避免单 key 高并发重建
- 雪崩:过期时间加随机抖动,集群多副本,限流兜底
- 一致性:先更新数据库再删缓存(或延迟双删),重要数据设短过期
容易踩的坑
- 空值不设过期,缓存被垃圾数据填满
- 所有 key 同一时间过期,缓存同时失效
- 无降级方案,缓存挂了业务直接不可用
验证与巡检
redis-cli -a 口令 info keyspace
redis-cli -a 口令 dbsize
- 巡检:空值缓存有过期、过期时间分散、降级通道可用
小结
缓存架构的验收:压测下数据库 QPS 不暴涨、热点 key 不集中在单节点、缓存失效时业务可降级。做到这三点,缓存才算可靠。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。