缓存穿透、缓存击穿和缓存雪崩

1.缓存穿透

一次请求过来,根据参数去查,缓存中没有,数据库中也没有,就一直造成所有的请求直接都打到数据库,可能使数据库挂掉。
a.参数校验,直接拦截一部分非法参数的恶意请求
b.可以把不存在的key存到缓存中设为null,下次请求就可以走缓存返回null。
c.使用布隆过滤器,但是布隆过滤器最致命的问题是:如果数据库中的数据更新了,需要同步更新布隆过滤器。但它跟数据库是两个数据源,就可能存在数据不一致的情况。

2.缓存击穿

某一时刻热点key过期,假设此刻有很多请求,就会导致在缓存生成前所有的请求都直接打到库中,可能数据库挂掉
a.定时任务自动续期
b.热点数据永不过期,手动生成,手动删除

3.缓存雪崩

缓存雪崩是缓存击穿的升级版,缓存击穿说的是某一个热点key失效了,而缓存雪崩说的是有多个热门key同时失效。就会造成大量的请求,透过缓存,而直接访问数据库。
a.过期时间设置随机数,避免同时过期
b.缓存服务高可用,集群
c.服务降级.比如有10个请求在最近一分钟内,从redis中获取数据失败,则全局开关打开。后面的新请求,就直接从配置中心中获取默认的数据。当然,还需要有个job,每隔一定时间去从redis中获取数据,如果在最近一分钟内可以获取到两次数据(这个参数可以自己定),则把全局开关关闭。后面来的请求,又可以正常从redis中获取数据了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值