redis中的缓存 穿透,击穿,雪崩问题的原因及解决方案

本文介绍了Redis缓存中的三种常见问题:缓存穿透、缓存击穿和缓存雪崩。缓存穿透是黑客持续查询不存在的数据,导致数据库压力过大;缓存击穿是指高频使用的数据在缓存过期时,大量请求涌入数据库;缓存雪崩则是大量缓存同时失效,请求全部落到数据库上。针对这些问题,提出了解决方案:使用布隆过滤器防止非法请求,设置热点数据永不过期,采用互斥锁控制并发,设置不同过期时间以及使用二级缓存作为备用策略,以减轻数据库压力并保证系统稳定运行。
摘要由CSDN通过智能技术生成

1.redis的缓存穿透:

        原因:在项目中我们使用了redis后,查询数据会先去redis中查询,如果在redis查询不到就会去数据库中查询,数据库查询速度是有极限的,比如MySQL的查询极限大概是每秒8000次,如果超出了这个极限数据库就会宕机,对我们的程序产生极大影响,如果一个黑客不停地去查询一个不存在的数据,比如主键等于-1的值,正常情况下我们的程序中不会有主键等于-1,所以这个时候,缓存穿透就产生了,redis就会向数据库中一直查询,直到你的数据库过载造成数据库崩溃,

        解决方法:1.布隆过滤器,在程序内部维护一系列合法的请求,比如id>0的等,将非法的请求直接过滤掉。

                          2.对返回结果为null的请求也进行缓存,但是要注意把销毁的时间放短一些,这样做以后,非法的请求再过来就会直接返回空

2.redis的缓存击穿:

        原因:redis中的缓存是有过期时间的,如果在高并发的项目中,redis中有个频繁使用的数据的key在某一时间失效了,但是这时有大量查询这些数据的请求过来,redis发现这些数据过期了就会去你的数据库中加载数据重新设置到缓存中,而这个时候,超大的并发可能就会瞬间把数据库压垮,就好比你去表演胸口碎大石,有石头挡着的时候那锤子对你的伤害有限,但是突然石头没了,但是锤子已经砸下来了,你没办法只能硬抗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值