刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
面试题
缓存穿透、缓存击穿、缓存雪崩分别是什么 ?怎么解决的 ?
使用微信搜索喵呜刷题,轻松应对面试!
答案:
解答思路:
对于缓存穿透、缓存击穿和缓存雪崩这三个概念,首先我们需要理解它们各自的定义和产生原因,然后针对每个问题提出相应的解决方案。
- 缓存穿透:指的是查询的数据在缓存中不存在,而数据库中也无此数据,导致每次请求都要去数据库中查询,失去了缓存的意义。
- 缓存击穿:指的是缓存中数据过期,恰好有一个请求查询此数据,此时如果数据库查询不到对应的数据也会去查询其他的数据,造成大量无效的查询请求打到数据库上。
- 缓存雪崩:当缓存系统重启或者大量缓存数据同时失效时,大量请求直接打到数据库上,导致数据库压力瞬间增大,严重时可能导致数据库崩溃。
针对这三个问题,我们可以提出以下解决方案:
最优回答:
关于缓存穿透、击穿和雪崩的问题及解决方案:
- 缓存穿透:可以采用布隆过滤器进行防御。布隆过滤器是一种数据结构,用于测试一个元素是否是集合的成员。在缓存查询之前,先通过布隆过滤器判断数据是否存在,如果不存在则直接返回null,避免对数据库的无效查询。此外,采用缓存空对象策略也能有效防止缓存穿透。
- 缓存击穿:可以通过互斥锁来解决。当缓存失效时,不是立即去数据库查询数据并更新缓存,而是通过加锁来保证只有一个请求能够去数据库查询数据,其他请求等待获取锁失败之后,直接从缓存获取旧数据或者等待新数据加载完成。这样可以避免多个请求同时打到数据库上。
- 缓存雪崩:可以通过设置不同的缓存失效时间或者使用分布式部署来缓解压力。对于重要的数据可以设置较长的缓存时间或者永不失效,对于次要的数据可以设置较短的缓存时间或立即失效。另外,使用分布式部署可以避免所有的请求都打到同一数据库上,从而分散数据库的压力。此外,还可以采用降级策略,当缓存出现问题时,可以临时使用无缓存的方式访问数据库。
解析:
创作类型:
原创
本文链接:缓存穿透、缓存击穿、缓存雪崩分别是什么 ?怎么解决的 ?
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!



