Redis缓存雪崩、缓存穿透、缓存预热、缓存倾斜、缓存穿刺击穿、缓存更新、缓存降级解决方案

本文探讨了Redis缓存中的常见问题,包括雪崩、穿透、预热、倾斜、击穿及更新、降级等,并提供了相应的解决方案。针对雪崩,建议设置不同过期时间和使用加锁或队列。对于缓存穿透,可以通过主键查询优化、布隆过滤器或空值缓存来缓解。击穿解决方案包括分布式锁和设置热点数据永不过期。缓存倾斜问题可通过读写分离、数据分布和客户端缓存热点数据来解决。缓存预热则是预先加载数据到缓存系统,确保用户请求能直接获取。最后,缓存降级策略是为了保证核心服务可用,适时关闭非核心服务。
摘要由CSDN通过智能技术生成

Redis缓存雪崩、缓存穿透、缓存预热、缓存倾斜、缓存穿刺击穿、缓存更新、缓存降级 等解决方案

-雪崩
缓存中大量数据短时间到期,然后短时间内不同人在访问这些数据,导致高并发(穿刺是某一条数据的高并发,雪崩是很多不同数据最终高并发,当然雪崩也有可能包含穿刺的数据)访问数据库

解决:

​ 1.设置不同的到期时间,将缓存的失效时间分散开,这样每一个缓存的过期时间的重复率就会降低,就很难引发大量的缓存集体性失效的事件。

​ 2.大多数系统设计者考虑:用加锁或者队列的方式,来保证同一时间内不会有大量的线程,同时对数据库进行读写,从而避免 数据库崩溃掉。
-穿透
查询数据库中不存在的数据,因为数据库中不存在,所以缓存中肯定没有,所有的请求都会落在数据库上面,若高并发的话,数据库就奔溃了

解决

​ 1.我们一般都是主键查询,其他查询走搜索,主键如果是自增的,可将当前数据库的主键最大值放缓存,然后修改流程为先查询缓存,有的话返回,没有的话先比较查询的主键和缓存中放的最大值,小于等于最大值就代表在数据库中然后继续流程

​ 2.若主键不是自增的,就将所有的主键提出来放入redis的set中,然后上面的流程改为先查询缓存,有的话则返回,没有的话先判断查询的主键在不在set中,在就查询数据库,不在返回

​ 3.采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值