redis缓存击穿、雪崩、穿透及业务场景

一、缓存击穿

1、概念

缓存击穿:由于并发查询同一热点数据而缓存的热点数据到时失效导致用户请求直接访问数据库,造成数据库压力过大。

2、业务场景

一款冷门商品突然爆火,原本redis中冷门商品数据设置了定时过期,爆火后大量请求同时去redis中访问该商品数据,恰巧该数据过期了,于是大量并发请求查询数据库,会导致数据库运行压力过大,从而影响其他业务。

3、解决方案

  1. 设置热门商品永不过期
  2. 使用双重检查锁,加锁排队,一次执行一条线程

二、缓存雪崩

1、概念

缓存雪崩:大量缓存数据同时间失效或者缓存服务器宕机,导致用户直接发起大量请求到数据库,数据库瞬间压力过大或宕机。

2、业务场景

redis中大量商品数据同时过期,大量用户直接向数据库请求查询商品信息,导致数据库运行压力过大或宕机。

3、解决方案

  1. 使用双重检查锁,加锁排队,设置随机过期时间
  2. 提前做好redis集群

三、缓存穿透

1、概念

缓存穿透:用户请求的数据既不存在缓存里,也不存在数据库里,导致每次请求都去查询数据库,从而数据库运行压力过大或宕机。

2、业务场景

攻击者伪造大量不存在的数据(比如:负数或者特别大的数),攻击数据库。

3、解决方案

  1. 参数校验
  2. 缓存空对象
  3. 布隆过滤器(黑名单、白名单)

四、redis的业务场景

  1. 缓存热点数据(经常会被查询,但是不经常被修改或者删除的数据)
  2. 限时的优惠活动信息、手机验证码
  3. 计数器(String)
  4. 分布式全局唯一id(String)
  5. 排行榜(SortedSet)
  6. 抽奖活动(set)
  7. 电商商品筛选(set)
  8. 构建队列系统(list)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值