Zane Blog

如何区分缓存击穿和缓存穿透

2025-09-18
redis
最后更新:2025-09-18
3分钟
408字

“穿透”和”击穿”这两个词非常相似,只有一字之差,容易混淆。

直观记忆法:动作和对象的差异

1. 从词语含义理解:

  • 穿透(Penetration) = 完全穿过、贯穿
    • 联想:像子弹穿透了整个目标,从前到后
    • 对应缓存穿透:请求同时穿透了缓存层数据库层(因为数据根本不存在)
  • 击穿(Breakdown) = 打破、突破某个点
    • 联想:像拳击手击穿了防线上的某个点
    • 对应缓存击穿:请求只击穿了缓存这一层,但在数据库层被拦住(因为数据在数据库中存在)

2. 图像记忆法:

想象两个场景:

缓存穿透:把系统想象成两层防线(缓存层和数据库层)

1
请求 → [缓存层:无此数据] → [数据库层:无此数据] → 穿透整个系统

缓存击穿

1
请求 → [缓存层:过期] → [数据库层:有数据,扛住了请求] → 只击穿了第一层

记忆小结

最简单的记忆方式:

  • 穿透 = 数据”不存在”,穿过了整个系统

  • 击穿 = 热点数据失效,破了缓存防线

  • 雪崩= (大量击穿或缓存失效)大量数据同时过期或缓存服务不可用引发系统性问题

缓存雪崩是指在某一时间段内,大量缓存数据集中过期缓存服务宕机,导致大量请求直接落到数据库上,引起数据库压力骤增,可能导致整个系统崩溃的现象。

本文标题:如何区分缓存击穿和缓存穿透
文章作者:Zane
发布时间:2025-09-18