跳到主内容
快讯直播
AI智模界
AI 词典

缓存穿透、击穿、雪崩:三种缓存病别混为一谈

缓存穿透(Cache Penetration)指请求的数据压根不存在,缓存和数据库都查不到。攻击者用随机 ID 狂刷,或用户查了永远没有的记录,缓存永远不命中,数据库每次都被打。比方:小区门禁查一个不存在的房号,每次都去物业翻底册。防御思路:入口校验,非法 ID 直接拒;对确定不存在的查询缓存空结果,设短过期时间;用布隆过滤器(Bloom Filter)先挡一层;对异常流量限流。

缓存击穿(Cache Breakdown)指某个热点 key 突然过期,大量请求同时发现缓存没了,一起涌向数据库重建缓存。数据其实存在,问题在一个点上的并发。比方:全校最火的食堂窗口招牌菜卖完,瞬间所有人挤到后厨。防御思路:互斥锁或单飞(singleflight),只让一个请求去数据库,其他等结果;热点 key 逻辑过期、异步刷新;活动前预热。

缓存雪崩(Cache Avalanche)指大批 key 在同一时间过期,或缓存集群整体故障,流量像雪崩一样全压到数据库。它伤的是面。比方:整栋楼门禁同时失灵,所有人堵到保安室。防御思路:过期时间 TTL(Time To Live)加随机抖动;分批预热和刷新;多级缓存;缓存集群高可用;下游限流、熔断、降级。

维度穿透击穿雪崩
数据是否存在不存在存在存在或大量
出问题范围单个或大量不存在 key单个热点 key大批 key 或整个缓存
典型触发恶意刷不存在 ID热点 key 过期同一时刻过期、宕机
核心防御校验、空值缓存、布隆过滤器互斥锁、逻辑过期、预热TTL 随机、多级缓存、熔断降级

对 AI 从业者,缓存不只存在于 Redis:提示词、检索结果、向量(AI 词典:Embedding">Embedding)、大语言模型(LLM)输出、语义缓存都可能中招。用户查不存在的文档 ID,可能穿透到向量数据库(Vector Database);热门检索增强生成(RAG)知识块缓存过期,可能击穿到 Embedding 和 LLM;大批会话缓存同时失效或缓存服务挂掉,可能雪崩到模型 API,延迟和成本一起飙升。判断顺序很简单:先看是“不存在、单点失效,还是大面积失效”,再选对应防御。具体组件的 TTL、锁和布隆过滤器实现,以官方页面为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。