缓存基础概念

1 缓存穿透

缓存穿透指的是用户不断对缓存和数据库中都没有的数据发起请求,例如id为负数或特别大的数,导致数据库压力过大。穿透可以想象成幽灵穿过墙壁一样,什么都没有碰到,就像数据库和缓存都没有命中。

一般情况下不会发生缓存穿透,较大可能是有人恶意攻击。

解决方案:

  1. 接口层添加参数校验,对于不合法参数直接拦截,例如id为负数的请求。
  2. 无法直接判断是否合法的话,如果数据库和缓存都没有命中,则把对应的id设置一个值保存到缓存中,这样下次请求同个id就直接返回我们设置的值。
  3. 缓存预热:将数据提前加入到缓存中,当数据发生变更的时候再更新到缓存中。

2 缓存击穿

缓存击穿指的是缓存中没有,但是数据库有的数据,如果并发用户特别多的话,一瞬间同时请求某条数据,缓存中没有读到,则同时请求数据库,导致数据库压力过大。

电商秒杀等场景容易发生缓存击穿。

解决方案:

  1. 设置热点数据永不过期。
  2. 缓存预热。

3 缓存雪崩

缓存雪崩指的是大批量缓存同时过期,同时请求数据库,导致数据库压力过大甚至宕机。缓存雪崩和缓存击穿的区别是,雪崩是同时并发查大量数据,击穿只是单条数据。

解决方案:

  1. 批量保存缓存数据的情况下,给过期时间加上一个随机数,防止同时大批量过期。
  2. 设置热点数据永不过期。
  3. 缓存预热。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值