
听到\”缓存\”两个字就以为是性能救世主,结果上线后反而因为缓存被击穿导致数据库炸裂?
Redis 已经是现在系统的标配了。在软考高级架构师的案例分析中,缓存设计几乎是每一年的必考题。阅卷老师和面试官最喜欢问的,不是 Redis 有几种数据结构,而是:当缓存失效或被恶意攻击时,你的系统还能活下来吗?
这就要提到著名的缓存“三兄弟”:缓存穿透、缓存击穿、缓存雪崩。这三个词听起来很像,但成因和解决方案完全不同。搞混了它们,在架构设计上就是灾难。
一、 缓存穿透(Cache Penetration):查询根本不存在的数据
场景描述: 你可以理解为有人恶意攻击。他发起一个请求查询 ID = -1 的数据。
查缓存:Redis 里肯定没有。
查数据库:数据库里也没有。
结果:这次查询什么都没得到,但白白消耗了数据库的一次连接。
后果:如果有黑客用海量的不存在 ID 发起请求,都会绕过 Redis 直接打在数据库上,数据库瞬间挂掉。
解决方案(架构师必背):
布隆过滤器(Bloom Filter):在访问 Redis



