Redis是大型架构核心,下面我详解Redis缓存穿透@mikechen
Redis缓存穿透方案:布隆过滤器
布隆过滤器是一种空间高效的概率型数据结构,用于判断某个键是否“可能存在”。
布隆过滤器,可大幅减少非法请求对数据库的穿透。
但存在一定的误判率(false positive),需在设计时平衡误判率与空间开销,并在数据变更时及时更新或重建过滤器。

在请求到达缓存前,先查询布隆过滤器。
若判定“不存在”,则直接返回空结果或错误,避免向数据库查询。
若判定“可能存在”,再按常规流程查询缓存与数据库。
Redis缓存穿透方案:缓存空值
当查询数据库确认某键不存在时,将该键与一个短时效的空对象(例如特殊标识或空值)写入Redis缓存。
下一次相同请求命中该空缓存,可直接返回空结果而无需访问数据库。

此法简单易行,但需控制空对象的过期时间。
以避免缓存污染及内存浪费,并对空值与真实值的区分作出明确约定。
Redis缓存穿透方案:白名单与预热缓存
对于业务已知的合法键集合(例如用户ID、商品ID等)。
可提前将合法键加载到布隆过滤器或直接预热到Redis缓存中,确保合法请求命中缓存而非落到数据库。
结合周期性同步与增量更新,能保持白名单或缓存与数据库的一致性。

减缓冷启动、与突发访问带来的穿透风险。
Redis缓存穿透方案:认证与业务校验
在请求入口对参数进行严格校验,拒绝明显非法或格式错误的请求,减少无效查询。
对于高频的恶意请求来源(如同一IP或同一用户提交大量不存在的键)。

可采用限流、封禁或加入黑名单策略,阻断其持续穿透行为。
此方法适合与其他手段结合使用,可有效降低恶意攻击带来的压力。
