黑客恶意伪造大量不存在的商品ID请求接口,导致请求直接绕过缓存(Redis)打到数据库(MySQL),这种现象在架构上称为“缓存穿透”(Cache Penetration)。如果并发量大,极易导致数据库瘫痪。 针对这种恶意攻击,利用 Redis 防御主要有两种核心方案,以及配合业务层的综合防御策略。 --- 核心方案一:布隆过滤器(Bloom Filter)—— 终极防线(最推荐) 当黑客使用不断变化且随机的假ID进行攻击时,布隆过滤器是最佳选择。 1. 原理: 布隆过滤器是一种空间效率极高的概率型数据结构。它的特点是: 判断不存在:100%准确。 如果布隆过滤器说商品ID不存在,那它一定不存在。 判断存在:存在极小的误判率(False Positive)。 如果它说存在,可能存在也可能不存在(但这个概率可以控制在极小,比如0.01%)。 2. 应对流程: 1. 预热: 系统启动时,将数据库中所有真实存在的商品ID的哈希值存入 Redis 的布隆过滤器中。 2. 拦截: 当请求到达时,先用 Redis 布隆过滤器判断该ID是否存在。 3. 处理: 如果布隆过滤器判定不存在,直接按...