缓存穿透

发生的现象:随时间变化

  • Redis
    • 命中率越来越低
    • CPU 占用激增
    • 内存占用十分平稳
  • 数据库
    • 压力激增,崩溃
  • 应用服务器
    • 流量增大

原因是大量非正常的 key 访问,数据库中 null 的返回值在 Redis 中并未缓存,导致每次都要在数据库上找,通常是出现在错误访问或者黑客攻击。

解决方案:

  • 缓存 null,但只能用作临时,需要定期清理,不然对内存占用很高
  • 使用布隆过滤器在请求访问的各个位置做判断处理
  • 监控 Redis 命中率,探测到攻击后对攻击来源做黑名单处理
  • 对 key 加密,获取到请求后在后台做 key 校验判断是否合法
Last Updated: 11/2/2023, 9:04:01 PM