首页常见问题正文

什么是缓存的穿透,击穿,雪崩?遇到这三种情况要怎么解决?

更新时间:2023-03-09 来源:黑马程序员 浏览量:

IT培训班

  缓存穿透(Cache Penetration)指的是查询一个不存在的数据,由于缓存没有命中,请求会直接穿透到数据库,导致数据库压力过大,甚至可能造成宕机。

  缓存击穿(Cache Miss)指的是某一个热点key在缓存中过期或者被清除,此时大量请求涌入,由于缓存中没有该key的缓存数据,请求会直接穿透到数据库,导致数据库压力过大,甚至可能造成宕机。

  缓存雪崩(Cache Avalanche)指的是缓存中大量的数据在同一时间过期失效,导致大量的请求涌入数据库,导致数据库压力过大,甚至可能造成宕机。

  以下是针对这三种情况的解决方法:

  缓存穿透:

  ·在应用程序中添加合适的校验机制,过滤掉不存在的key,如将所有请求数据的唯一标识符(如id)通过一个哈希函数映射为一个固定的字符串,并判断字符串是否合法。

  ·对于查询结果为空的情况,可以将其缓存到缓存中,但是有效期较短,比如5分钟,防止恶意攻击。

1678328343141_什么是缓存穿透、击穿、雪崩.jpg

  缓存击穿:

  ·使用互斥锁或分布式锁,防止大量请求同时访问数据库。

  ·使用热点数据预加载,即在缓存过期之前,提前异步地加载数据,确保缓存一直有数据。

  缓存雪崩:

  ·使用不同的过期时间,避免大量的数据在同一时间过期失效。

  ·使用缓存的异步刷新机制,保证缓存中的数据不会同时过期失效。

  ·使用多级缓存,如本地缓存、分布式缓存和全局缓存,使得缓存的失效不会同时影响所有缓存节点。

分享到:
在线咨询 我要报名
和我们在线交谈!