缓存穿透与布隆过滤器
面试官问:"什么是缓存穿透?"
小陈说:"就是缓存没命中,去查数据库了。"
面试官追问:"如果大量恶意请求查询不存在的数据,缓存和数据库都查不到,会怎样?"
小张说:"...数据库压力很大?"
面试官继续追问:"怎么解决?布隆过滤器是什么原理?"
小陈彻底卡住了。
缓存穿透是 Redis 缓存架构中最常见的问题之一。如果不防护,恶意用户可以用大量不存在的数据请求击垮数据库。这道题能说清楚穿透原因、布隆过滤器原理的候选人,对 Redis 的工程实践有较深理解。
一、缓存穿透的本质 🔴
1.1 穿透的定义
1.2 穿透的常见原因
1.3 ❌ 错误示范
候选人原话:"缓存穿透就是缓存过期了,需要回源。"
问题诊断:混淆了缓存穿透和缓存击穿。穿透是查不到数据,击穿是大量请求同时查同一个过期 key。
候选人原话 2:"布隆过滤器可以 100% 防止穿透。"
问题诊断:布隆过滤器有误判率,不能 100% 防止。存在"布隆说过存在,但实际不存在"的误判情况。
【面试官心理】 这道题我能从"穿透 vs 击穿 vs 雪崩"的对比切入。能说清楚三种问题的区别和各自解决方案的候选人,说明他对缓存问题有系统理解。
二、布隆过滤器原理 🔴
2.1 布隆过滤器的结构
2.2 图解
2.3 布隆过滤器的参数
三、布隆过滤器在 Redis 中的应用 🟡
3.1 RedisBloom 模块
3.2 布隆过滤器的误判率
3.3 布隆过滤器的局限性
四、其他穿透解决方案 🟡
4.1 缓存空值
4.2 参数校验
4.3 布隆 + 空值组合
【面试官心理】 缓存穿透是 Redis 面试中的高频题。能说清楚布隆过滤器的原理、误判率和适用场景的候选人,说明他对 Redis 的工程实践有深入理解。