Redis的缓存穿透

参考:

RssRead/【Redis】Redis面试题详解与使用案例(金三银四面试专栏启动)#^d302df
43-Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?-51CTO_COM@annote#^sran-1678436321160

缓存穿透是指在缓存和数据库中都不存在的数据被不断发起请求。这时的用户就很有可能是攻击者了,这种请求有可能会导致数据库压力过大

缓存请求一般发生在缓存和数据库中的数据被错误删除导致都没有数据,或者是恶意攻击故意访问大量不存在的数据

解决方案

  1. 对非法请求进行限制,比如在接收参数的时候过滤业务接口中的非法值、空值、负值
  2. 布隆过滤器:一种类似哈希表的算法。它使用所有可能的查询条件来生成位图,这个位图将用于在数据库查询之前进行过滤。如果数据不存在则这个查询就会被直接过滤掉,减轻数据库的压力
  3. 缓存空值:在第一次查询不存在的数据后,会对对应的 key 生成一个空的 value ,然后设置一个比较短的过期时间