缓存穿透

时间:2024-02-23 14:30:46

缓存和数据库都没有这个数据,一般是被攻击了,有人频繁查询不存在的key。
解决方法:

  • 接口层设置校验,key异常的直接拦截
  • 缓存和数据库都没有的数据,在缓存里写key-null,然后设置一个较短的过期时间,比如30s(防止之后真有这个key写进数据库了,缓存数据还是null)
  • 布隆过滤器。一个key会被多个hash函数映射,假设这些位置都被点亮认为这个数据可能是存在的,可以去数据库查一下。要是有的hash位置没被点亮,就是拒绝。这样对时间空间都好,就是不完全准确。