缓存雪崩、穿透、击穿

本文介绍了缓存系统常见的问题及其解决方案。缓存雪崩发生在大量缓存同时失效,导致数据库压力剧增;解决方案包括设置不同的失效时间或不设失效时间。缓存穿透是无效请求导致数据库查询,可采用参数合法性校验或布隆过滤器避免;缓存击穿是特定数据过期引发大量请求,可采取永不过期策略或使用分布式锁来解决。
摘要由CSDN通过智能技术生成

在这里我们先讲一下正常的访问流程:
在这里插入图片描述
首先:用户去访问淘宝的一个品牌数据,淘宝会先将请求发送到redis中,如果redis中有,那么就返回数据,如果redis中没有,那么回去数据库中查询,返回数据的同时,也会将数据同步到redis中,下次请求,就会从redis中返回数据,而不会去访问数据库。

1.缓存的雪崩

在这里插入图片描述
如上图:
比如在双十一时,某宝的首页有许多的数据资源,我们都将这些数据缓存在redis中,并且设置缓存失效的时间为四个小时,当四个小时过去后,所有的请求访问都聚集在数据库中。像这样的情况就是缓存雪崩。

解决方案:
设置缓存失效时间不同,让他们失效时间不同。
不设置缓存时效的时间。

2.缓存的穿透

在这里插入图片描述

如上图所示:
示例,在数据库中id都是从0开始的,有些用户就请求id小于0的数据,这种数据在redis中不存在,所以数据请求传到数据库中,数据库中也没有这样的数据,所以数据库返回空。

解决方案:
对参数的合法性进行校验
布隆过滤器

3.缓存的击穿

在这里插入图片描述
示例:
比如在某宝上,大家在拍卖一件东西,大家都在对这件东西进行加价,某宝设置这件东西的数据的缓存时效时间为三个小时,所以当三个小时过去后,大量的请求就会直接访问在数据库中。
在这里是某一个数据的请求。

解决方案:
缓存永远不时效
使用分布式锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值