【≅Redis】什么是缓存穿透?怎么解决?

缓存穿透是指查询一个一定不存在的数据,从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。

在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。

解决方案:

  • 采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,定时把数据库的数据存到布隆过滤器中。请求进来不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。
  • 一个查询返回的数据为空,我们仍然把这个空结果进行缓存,但它的过期时间会很短

 

posted @ 2023-03-16 12:06  残城碎梦  阅读(21)  评论(0编辑  收藏  举报