缓存穿透和缓存雪崩的底层原理
时间: 2023-09-21 16:04:12 浏览: 140
java面试题高级, 对底层高并发深入理解
缓存穿透和缓存雪崩是与缓存相关的两个常见问题。
缓存穿透指的是在缓存中无法找到所需数据,导致每次请求都要查询数据库。这可能是由于恶意攻击或者查询不存在的数据所致。底层原理是当一个请求查询的数据不在缓存中时,会继续查询数据库,如果数据库也没有相关数据,就会导致缓存穿透。
缓存雪崩指的是大量缓存数据在同一时间失效或者缓存整体宕机,导致大量并发请求直接查询数据库,给数据库带来巨大压力,甚至可能导致数据库崩溃。底层原理是当缓存中的数据集中在一个时间段内同时失效,或者缓存服务器发生故障,无法提供服务,所有的请求都会直接访问数据库。
针对缓存穿透问题,可以采取的解决方案包括使用布隆过滤器来过滤掉不存在的数据,或者将查询结果为空的键值对也存入缓存中,但设置一个较短的过期时间。
针对缓存雪崩问题,可以采取的解决方案包括设置缓存的过期时间随机化,避免同时失效,或者使用热点数据预加载,提前将热点数据加载到缓存中。
总之,缓存穿透和缓存雪崩问题都需要通过合理的缓存策略和解决方案来解决,以提高系统的性能和稳定性。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Redis 缓存穿透、缓存击穿和缓存雪崩](https://blog.csdn.net/weixin_51921447/article/details/129010189)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [Redis缓存穿透、缓存雪崩和缓存击穿](https://blog.csdn.net/qq_41071876/article/details/120076924)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文