比喻:
- 数据库:工厂
- 缓存:商店
- 请求:用户买东西
1、缓存击穿理解
- 定义:缓存中存在查询的key,但是过期了,请求转发到数据库。
- 个人理解:用户去商店买鞋,商店内鞋已售罄(没有及时补货),用户直接去工厂买鞋。
- 解决办法:(1)定时任务更新缓存数据;(2)设置多级缓存机制;(3)分布式缓存(这个太难,我也理解不了)。
2、缓存穿透理解
- 定义:缓存中不存在查询的key,请求转发到数据库。
- 个人理解:用户去商店买原子弹,商店不卖原子弹,用户直接去工厂买原子弹(虽然买不到)。
- 解决办法:第一次请求,缓存查询不到,就去数据库查询,查询出来的数据(null),也要存到缓存中,并设置较短的过期时间,当下一次再次请求的时候,就可以从缓存中获取。
3、缓存雪崩理解
- 定义:承载大并发(热点)访问的key,在同一时间段内集中过期,请求转发到数据库,导致数据库压力过大,挂掉了。
- 个人理解:全球70亿人都去京东买商品(姑且认为京东的商品不够卖),第一天商品瞬间全部售罄,第二天,人们继续购买的话(假如商品供货不足),商品已经售罄,京东再也提供不了人们的商品需求,人们就会直接去工厂购买,工厂也承受不了这么多人(不能及时造出这么多商品),工厂就会压力过大,关门了。
- 解决办法:给热点key分别设置不同的过期时间,保证不在同一时间段内,全部过期。
4、自己画的图解