外观
一句话答案
位数组+多个哈希函数:可能存在(有误判)或一定不存在(无漏判),用于缓存穿透防护。
核心要点
原理: 插入时 k 个哈希置 1;查询时全 1 可能存在,有 0 一定不存在
特点: 空间高效 / 有假阳性无假阴性 / 不支持删除
应用: 缓存穿透防护 / URL去重 / HBase避免无效读
追问与易错
追问方向:
- 布隆过滤器能删除吗?
- 误判率怎么控制?
- 和 HashSet 比优势?
易错点:
- ❌ 布隆过滤器 100% 准确——有假阳性
- ❌ 可以替代缓存——只能判断存在性
💡 记忆锚点
布隆过滤器像门口的"黑名单速查":用k个哈希函数把元素映射到位数组的k个位置置1。查询时全是1说"可能在"(有误判,因为位可能被别人占了),有一个0就说"绝对不在"(无漏判)。空间极省但不能删除(置0会影响别人)。Redis用它挡缓存穿透:不在布隆里的请求直接拒绝,不打到数据库。