什么是缓存击穿,缓存穿透,缓存雪崩?解决方案有哪些?

本文详细介绍了缓存击穿、缓存穿透和缓存雪崩的概念及其解决方案,包括双重检索机制、布隆过滤器的应用以及应对策略如限流和服务降级,旨在提升高并发场景下的系统稳定性。
摘要由CSDN通过智能技术生成

1.什么是缓存击穿?

说明:缓存击穿是在高并发的系统中查询一个redis缓存中刚刚失效的key,导致大量查询直接到了数据库,造成数据库压力太大。

解决方案:

        双重检索机制,在高并发的情况下,保证同一时间内只有一个线程去访问数据库,读取数据再回写到redis中,其他线程阻塞等待,当其他线程获取到了锁的时候,再去redis中查询是否存在这个key,存在这个key则直接返回。

2.什么是缓存穿透?

说明:缓存穿透是用户在不断的请求访问一个redis和数据库都不存在的数据。

解决方案:

        1、回写机制,将不存在的key设置null值回写到redis中,但是存在一个问题,如果是恶意的攻击,会导致设置成null值的key会很多。

        2、使用布隆过滤器(推荐),由一个位图数组和N个哈希函数构成,将所存数据通过哈希算法计算得到一个哈希值,再将值对位图取模,将每个哈希值在位图的所在位置都设置成1,但是存在误判的可能,但可以解决缓存穿透的问题。

3.什么是缓存雪崩?

说明:同一时间有大量的缓存数据失效或者redis服务宕机,同时又有大量的数据来进行访问,导致数据库压力突然增大,导致系统崩溃。

解决方案:

        1.限流+服务降级处理,均匀设置过期时间

        2.redis主从复制+哨兵模式+redis持久化

        3.设置热点数据永不过期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值