适用场景

缓存用好了是性能利器,用不好就是事故来源:缓存雪崩打穿数据库、热点 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 不集中在单节点、缓存失效时业务可降级。做到这三点,缓存才算可靠。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。