Redis雪崩、穿透、击穿

一、缓存雪崩(Cache Avalanche)

定义:雪崩效应是指缓存系统中大量key在同一时间段内失效,导致大量请求直接打向数据库,造成数据库压力过大,甚至宕机。

原因

  • 缓存时间设置相同或相近,同时失效。

  • 突发的高流量访问缓存,导致缓存大量失效。

解决方案

  • 使用随机过期时间,避免大量key同时过期。

  • 限流降级,在高流量时对部分请求进行限流或降级处理。

  • 多级缓存策略,例如使用本地缓存作为一级缓存,Redis作为二级缓存。

  • 缓存预热,提前将热点数据加载到缓存中。

二、缓存穿透(Cache Penetration)

定义:缓存穿透是指查询一个不存在的数据,由于缓存中找不到该数据,因此请求会穿透到数据库。当大量这样的请求发生时,数据库的压力会增大。

原因

  • 恶意攻击,故意请求不存在的数据。

  • 应用逻辑错误,导致大量无效请求。

解决方案

  • 缓存空值,对于不存在的数据,也将其在缓存中标记为不存在。

  • 布隆过滤器(Bloom Filter),在缓存之前添加一个快速校验层,过滤掉不存在的数据。

  • 请求限流,对于频繁查询不存在的数据的请求进行限制。

  • 对数据进行合法性校验,避免无效数据查询。

三、缓存击穿(Cache Breakdown)

定义:缓存击穿是指一个热点key过期,大量请求同时访问该key,由于缓存中找不到该数据,请求会穿透到数据库,导致数据库压力瞬间增大。

原因

  • 热点数据过期。

  • 突发的高流量访问热点数据。

解决方案

  • 永久缓存热点数据或设置较长的过期时间。

  • 互斥锁,当缓存过期时,只有获取到锁的请求能访问数据库,其他请求等待锁释放后从缓存中获取数据。

  • 双缓存策略,主缓存设置较短的过期时间,备用缓存设置较长的过期时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值