8-Redis架构设计到使用场景-缓存穿透、缓存雪崩、缓存预热、缓存降级

9 篇文章 0 订阅

专栏目录

1-Redis架构设计到使用场景-四种部署运行模式(上)
2-Redis架构设计到使用场景-四种部署运行模式(下)
3-Redis架构设计到使用场景-主从集群和分片集群
4-Redis架构设计到使用场景-string、list、set、zset、hash使用场景
4-Redis架构设计到使用场景-Redis数据结构与使用场景
5-Redis架构设计到使用场景-Redis请求执行过程
6-Redis架构设计到使用场景-存储原理-数据类型底层结构
7-Redis架构设计到使用场景-持久化机制、缓存失效策略、缓存命中率
8-Redis架构设计到使用场景-缓存穿透、缓存雪崩、缓存预热、缓存降级

常见问题

在这里插入图片描述

缓存穿透

一般访问缓存,如果缓存中存在查询的商品数据,那么直接返回;如果缓存中不存在商品数据,一般需要访问数据库获取数据。

在这里插入图片描述

由于不恰当的业务实现,或者外部恶意攻击不断请求非缓存数据,导致所有的请求都会在短时间访问到数据库,对数据库可能带来一定的压力,甚至引起崩溃。

**解决方案:**针对缓存穿透的情况,最简单的对策就是将不存在的数据访问结果,也存储到缓存中,避免缓存访问的穿透;并将不存在商品数据的访问结果也缓存下来,有效的避免缓存穿透的风险。

缓存雪崩

当缓存重启或者大量的缓存在某一时间段失效,会导致大批流量直接访问数据库,对DB造成压力,从而引起DB故障,引起系统崩溃。

举个栗子,对于抢购类的促销运营活动,活动期间将带来大量的商品信息、库存等相关信息的查询。为了避免商品数据库的压力,将商品数据放入缓存中存储。不巧的是,抢购活动期间,大量的热门商品缓存同时失效过期了,导致大量查询流量落到数据库之上,对于数据库来说造成很大的压力。

解决方案:

  1. 将商品根据品类热度分类,购买比较多的类目商品缓存周期长一些,购买相对冷门的类目商品,缓存周期短一些;
  2. 在设置商品具体的缓存生效时间的时候,加上一个随机的区间因子,比如说5-10分钟之间来随意选择失效时间;
  3. 提前预估DB能力,如果缓存挂掉,数据库仍可以在一定程度上抗住流量的压力。

缓存预热

缓存预热是指系统上线后,将相关的缓存数据直接加载到缓存系统。可以避免在用户请求时,先查询数据库,然后再将数据缓存的问题。用户直接查询事先被预热的缓存数据。

在这里插入图片描述

如果不进行预热,那么Redis初识状态数据为空,系统上线初期,对于高并发的流量,都会访问到数据库中,对数据库造成流量的压力。

解决方案:

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

缓存降级

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

举个栗子,对于应用的首页,一般访问量会非常大,首页里面往往包含了部分推荐商品的展示信息,这些推荐商品都会放到缓存中进行存储,同时为了避免缓存的异常情况,对热点商品数据也存储到了内存中,同时内存中还保留了一些默认的商品信息。

在这里插入图片描述

专栏目录

1-Redis架构设计到使用场景-四种部署运行模式(上)
2-Redis架构设计到使用场景-四种部署运行模式(下)
3-Redis架构设计到使用场景-主从集群和分片集群
4-Redis架构设计到使用场景-string、list、set、zset、hash使用场景
4-Redis架构设计到使用场景-Redis数据结构与使用场景
5-Redis架构设计到使用场景-Redis请求执行过程
6-Redis架构设计到使用场景-存储原理-数据类型底层结构
7-Redis架构设计到使用场景-持久化机制、缓存失效策略、缓存命中率
8-Redis架构设计到使用场景-缓存穿透、缓存雪崩、缓存预热、缓存降级

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xianghan收藏册

极简精品作,一分也是一份鼓励哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值