redis的雪崩,击穿与穿透

redis的雪崩

例如在双11期间,大量内容从存放在redis进行缓存,但存放在redis的内容有过期时间,到过期时间后,缓存内的大量数据失效,大量请求进入到数据库,导致数据库相应不及时,发生雪崩。

解决方案

设置缓存的失效时间,不让缓存都在同一时间失效,在使用缓存同时初始化缓存

对redis进行集群部署,把热点缓存分别均匀放到不同节点上

redis的击穿

当缓存中其中一个热点数据突然失效时,多个对此热点数据的请求到达数据库 ,导致数据库响应不及时

解决方案:

使用分布式锁,当大量请求访问数据库时,只有一个请求可以抢到锁,当一个请求从数据库找到数据,再将热点数据写入缓存,其他请求在睡眠后再进入redis中查询就可找到数据。

redis的穿透

例如当有人想对网站进行恶意攻击时,因为数据库主键是从0递增的,当有请求的参数小于0,那请求在redis缓存中查找不到,请求进入数据库查询,大量非法请求到达数据库,使其崩溃。

解决方案:

若请求为非法,将非法请求设为空也放入缓存中

对参数合法性校验,不合法就return

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值