Redis常见异常及解决方案-缓存穿透、缓存雪崩、缓存预测、缓存降级

1.缓存穿透

由于不恰当的业务功能实现,或者外部恶意攻击不算请求不存在的数据,由于缓存中没有保存该数据,就会直接访问数据库,对数据库带来压力甚至崩溃。
解决:
将不存在的数据访问结果,也存到缓存中,避免缓存访问的穿透。

2.缓存雪崩

当缓存重启或大量缓存数据同时失效,这样大批请求就会直接访问数据库,对 DB 造成压力, 从而引起 DB 故障,系统崩溃。

解决:
(1)将数据按照热度分类,热度较高的缓存周期长一些,热度较低的缓存周期短一些。
(2)设置数据的过期时间时,添加一个随机因子,比如5分钟10分钟。
(3)预估DB能力,如果缓存挂掉,数据库仍可以在一定程度上抗住流量的压力。

3.缓存预热

缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统。这样就可以避免在用户请求的
时候,先查询数据库,然后再将数据缓存的问题。用户直接查询事先被预热的缓存数据
如果不进行预热, 那么 Redis 初识状态数据为空,系统上线初期,对于高并发的流量,都会访
问到数据库中, 对数据库造成流量的压力。
解决方案:

  1. 数据量不大的时候,工程启动的时候进行加载缓存动作;
  2. 数据量大的时候,设置一个定时任务脚本,进行缓存的刷新;
  3. 数据量太大的时候,优先保证热点数据进行提前加载到缓存。

4.缓存降级

降级的情况,就是缓存失效或者缓存服务挂掉的情况下,我们也不去访问数据库。我们直接访问内存部分数据缓存或者直接返回默认数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值