系统架构设计师 · 高频练习

缓存穿透、缓存击穿和缓存雪崩怎么区分?

高级 单选题 第 160 题 中等 系统架构设计师缓存穿透缓存击穿缓存雪崩Redis
题目

某电商系统中,攻击者不断请求大量根本不存在的商品 ID。由于缓存中查不到,数据库中也查不到,这些请求持续绕过缓存打到数据库,造成数据库压力升高。该现象更接近()。

A 缓存穿透
B 缓存击穿
C 缓存雪崩
D 磁盘碎片整理
题目类型:原创高频考点题 用途:用于帮助理解系统架构设计师相关考点和答案解析,不等同于官方真题。
书木兰刷题练习 适合懒人、小白的刷题通关平台
正确答案
A
答案解析

缓存穿透通常指请求的数据在缓存和数据库中都不存在,大量请求不断绕过缓存打到数据库。缓存击穿则更强调某个热点 key 过期瞬间,大量并发请求同时回源;缓存雪崩强调大量 key 同时失效或缓存服务整体不可用,导致请求成片压向数据库。穿透常见防护包括缓存空值、布隆过滤器、参数校验和限流。

选项分析

A

正确。不存在的数据反复绕过缓存访问数据库,属于缓存穿透。

B

错误。缓存击穿通常是某个存在的热点 key 过期,大量请求同时回源。

C

错误。缓存雪崩强调大量 key 同时失效或缓存服务整体不可用。

D

错误。磁盘碎片整理与缓存并发问题无关。

本题为什么容易错

这题容易错在看到数据库压力升高就选雪崩。雪崩看的是大量缓存同时失效;本题的核心是请求的数据本来就不存在,缓存层挡不住,所以是穿透。

先看结论

简短答案

缓存穿透、缓存击穿和缓存雪崩怎么区分,正确答案是 A(缓存穿透)。缓存穿透通常指请求的数据在缓存和数据库中都不存在,大量请求不断绕过缓存打到数据库。缓存击穿则更强调某个热点 key 过期瞬间,大量并发请求同时回源;缓存雪崩强调大量 key 同时失效或缓存服务整体不可用,导致请求成片压向数据库。穿透常见防护包括缓存空值、布隆过滤器、参数校验和限流。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
缓存穿透 本题正确答案 正确。不存在的数据反复绕过缓存访问数据库,属于缓存穿透。 看到题干核心场景时优先联想到它
缓存击穿 本题干扰项 错误。缓存击穿通常是某个存在的热点 key 过期,大量请求同时回源。 看到该词不要急着选,先判断是否真正解决题干问题
缓存雪崩 本题干扰项 错误。缓存雪崩强调大量 key 同时失效或缓存服务整体不可用。 看到该词不要急着选,先判断是否真正解决题干问题
磁盘碎片整理 本题干扰项 错误。磁盘碎片整理与缓存并发问题无关。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 缓存击穿:错误。缓存击穿通常是某个存在的热点 key 过期,大量请求同时回源。
  • 缓存雪崩:错误。缓存雪崩强调大量 key 同时失效或缓存服务整体不可用。
  • 磁盘碎片整理:错误。磁盘碎片整理与缓存并发问题无关。
复习

知识点详解

Redis是系统架构设计师考试中需要结合场景理解的考点。围绕“缓存穿透、缓存击穿和缓存雪崩怎么区分”这类题目,复习时要先看题干描述的是概念定义、适用场景、作用效果,还是与其他选项的区别。本题的题干关键词是“某电商系统中,攻击者不断请求大量根本不存在的商品 ID。由于缓存中查不到,数据库中也查不到,这些请求持续绕过缓存打到数据库,造成数据库压力升高。该现象更接近()”,它指向的核心答案是 A(缓存穿透)。

备考速记

备考速记:题干如果强调“Redis”中的关键目标,就先联想到 Redis;如果选项里出现 缓存击穿、缓存雪崩、磁盘碎片整理,不要只看名称熟悉,要判断它们是否真正对应题干场景。

Redis 在Redis场景中的作用

Redis在本题中的核心价值,是解决“某电商系统中,攻击者不断请求大量根本不存在的商品 ID。由于缓存中查不到,数据库中也查不到,这些请求持续绕过缓存打到数据库,造成数据库压力升高。该现象更接近()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给出Redis场景,判断应该选择哪个概念、工具、协议或管理过程。
  • 考查Redis的作用,要求从四个相近选项中找出最符合题干目标的一项。
  • 把Redis和缓存击穿、缓存雪崩、磁盘碎片整理放在一起考,重点看适用场景是否一致。
  • 题干通常会出现一个关键动作或目标,先定位关键词,再回到选项逐一排除。
Redis 在系统架构设计师软考中的考法

软考选择题通常不会只考概念定义,还会把Redis放到Redis场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

题干里最关键的一句是“大量根本不存在的商品 ID”。如果数据库里本来就没有这批数据,缓存自然也没有,反复请求就会穿过缓存层打到数据库,这就是缓存穿透。老师讲架构题时一般会让大家先问:数据到底存在不存在?存在但热点过期,多半是击穿;大量一起失效,多半是雪崩;根本不存在还一直查,就是穿透。

考点定位

缓存三兄弟不要混:穿透是查不存在,击穿是热点 key 失效,雪崩是大量 key 或缓存整体失效。

易错提醒

  • 把所有缓存失效造成数据库压力都叫雪崩。
  • 没有区分数据是否真实存在。
  • 只想到加缓存,没想到缓存空值、布隆过滤器和参数校验。

备考提示

  • 复习缓存题时,用三个问题判断:数据存在吗?是不是热点 key?是不是大量 key 同时失效?
  • 架构题常把缓存穿透、击穿、雪崩放在同一道题里考,建议按场景而不是按名字背。

你可能还想了解

  • 缓存穿透、缓存击穿和缓存雪崩怎么区分?
  • Redis是什么?
  • Redis在系统架构设计师考试中怎么考?
  • 系统架构设计师Redis题怎么理解?
  • 缓存穿透击穿雪崩区别怎么考?
  • 系统架构设计师缓存题怎么考?

本文小结

本题核心考点是Redis在Redis场景中的判断和应用。遇到类似题目时,先看题干描述的目标,再判断哪个选项最符合场景;本题应选择 A(缓存穿透)。