首页/数据/Redis 进阶速查/缓存穿透:空值缓存与布隆过滤器
数据结构与选型42 条

缓存穿透:空值缓存与布隆过滤器

查询不存在的数据会每次都打到数据库:把空结果短暂缓存(几十秒),或在入口用布隆过滤器判断键是否可能存在,拦住无效请求。

Redis 进阶速查数据更新于 2026-10-12
空值缓存SET k '' EX 60
布隆过滤器BF.ADD / BF.EXISTS(RedisBloom 模块)
本地方案进程内布隆加定期重建

示例

示例
redis-cli SET user:999999 '' EX 60
redis-cli BF.ADD users:bloom user:1001
redis-cli BF.EXISTS users:bloom user:999999
布隆过滤器只会假阳(说存在可能不存在),不会假阴(说不存在一定不存在),适合放在最前面兜底拦截。

易错点

  • 空值缓存容易被随机 ID 灌满,TTL 要短并结合入口限流
  • 布隆过滤器不支持删除元素,数据大量删除后需重建(计数布隆可删但内存更大)

数据来源与参考

  • Redis 官方文档:RedisBloom 模块(BF.ADD/BF.EXISTS)
  • Redis 官方文档:缓存穿透防护思路
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌