美文网首页
缓存穿透、击穿、雪崩

缓存穿透、击穿、雪崩

作者: 策马踏清风 | 来源:发表于2020-04-14 10:44 被阅读0次

正常流程

  1. 前端请求数据
  2. 先从缓存找,找到直接返回结果
  3. 取不到从数据库中取
  4. 数据库取到更新到缓存再返回结果
  5. 数据库也没有,返回空

缓存穿透

描述
用户不断发送内存和数据库中都没有的数据。导致数据库压力过大

解决

  1. 基础规则校验,如id > 0等屏蔽必然不存在的数据请求
  2. 布隆过滤器,排除必然不存在的数据
  3. 缓存和数据库都没有的数据,查出来之后可以将值设为空保存在内存中,设置有效期。

缓存击穿

描述
并发量大的时候缓存失效,导致请求全部压到了数据库上。

解决

  1. 热点数据永不过期
  2. 峰值前预热
  3. 读数据库加锁,只让一个线程读取数据库。获取锁失败的线程自旋,等待若干时间后再从内存中获取

缓存雪崩

描述
缓存中的数据大批量过期,导致数据查询量过大。缓存击穿是单个数据过期,缓存雪崩是多个数据过期

解决

  1. 缓存数据过期时间随机设置,防止同一时间设置的缓存又同时失效
  2. 分布式缓存可以将热点数据均匀分布在不同缓存数据库中
  3. 热点数据永不过期
  4. 后端进行服务降级和限流

相关文章

网友评论

      本文标题:缓存穿透、击穿、雪崩

      本文链接:https://www.haomeiwen.com/subject/tcczmhtx.html