缓存击穿,缓存穿透 - 智学轩城

缓存击穿,缓存穿透

陶仲辰头像

陶仲辰

2026-04-26 17:06:53

记得有一次,我在一家电商公司做运维,那会儿正值“双十一”前夕,服务器压力山大。那天下午,我正在监控服务器,突然发现数据库访问量激增,CPU和内存使用率飙升。我赶紧查看了日志,发现好多查询请求都是针对不存在的商品ID。
那时候,公司为了提高查询效率,采用了缓存机制。结果,由于缓存没有命中,每次查询都直接打到了数据库上,导致数据库压力山大。我赶紧调整了缓存策略,增加了热点数据缓存,并且设置了合理的过期时间,这才缓解了数据库的压力。
等等,还有个事,我突然想到。那次缓存击穿的处理,让我深刻理解了缓存穿透和缓存击穿的区别。缓存穿透是指缓存和数据库中都没有的数据,缓存穿透会直接请求数据库,从而可能暴露数据库的风险。而缓存击穿是指缓存中存在数据,但缓存过期了,这时候请求还是会打到数据库上。
那你们觉得,除了缓存策略调整,还有哪些方法可以防止缓存穿透和缓存击穿呢?

闭仲莹头像

闭仲莹

2026-05-09 11:38:10

缓存击穿:缓存中某个key失效,访问量突然大增,导致数据库压力增大。 缓存穿透:查询不存在的key,直接访问数据库,导致数据库压力增大。
项目:某电商系统,2019年 缓存击穿:用户频繁查询不存在的商品ID,导致数据库瞬间访问量激增,服务器压力大。 解决方案:设置热点数据永不过期,使用布隆过滤器过滤不存在的key。
项目:某社交平台,2020年 缓存穿透:恶意用户利用API查询不存在的用户ID,导致数据库访问量激增。 解决方案:在数据库层面使用黑名单,拦截恶意请求。
我自己也在验证,布隆过滤器效果不错,但也要根据实际情况调整。
你自己掂量。