加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Redis_缓存穿透和雪崩

发布时间:2020-12-16 04:36:47 所属栏目:安全 来源:网络整理
导读:Redis缓存穿透和雪崩 目录 Redis缓存穿透和雪崩 1. 布隆过滤器 2. 缓存空对象 3. 缓存穿透和缓存击穿 4. 缓存雪崩 1. 布隆过滤器 布隆过滤器是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃,从而避免了对底层存储系统的

Redis缓存穿透和雪崩

目录
  • Redis缓存穿透和雪崩
    • 1. 布隆过滤器
    • 2. 缓存空对象
    • 3. 缓存穿透和缓存击穿
    • 4. 缓存雪崩

1. 布隆过滤器

布隆过滤器是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃,从而避免了对底层存储系统的查询压力

2. 缓存空对象

  • 当存储层不命中后,即使返回的空对象也将其缓存起来,同时会设置一个过期时间,之后再访问这个数据将会从缓存中获取,保护了后端数据源

  • 存在的问题

    • 如果空值能够被缓存起来,这就意味着缓存需要更多的空间存储更多的键,因为这当中可能会有很多的空值的键
    • 即使对空值设置了过期时间,还是会存在缓存层和存储层的数据会有一段时间窗口的不一 致,这对于需要保持一致性的业务会有影响

3. 缓存穿透和缓存击穿

  • 区别

    • 缓存穿透是由于缓存中没有命中,大量请求都去请求了持久层的数据库,对数据库造成了极大的压力 ====> 缓存中查不到
    • 缓存击穿是指一个 key 非常热点,大量并发对其进行访问,在整个key失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,使得数据库压力瞬间变大 ====> 量太大了
  • 解决方案

    • 缓存穿透
      • 布隆过滤器
      • 缓存空对象
    • 缓存击穿
      • 设置热点数据永不过期
      • 加互斥锁 ==> 每个key同一时间只有一个线程去查询后端服务,其余的线程等待

4. 缓存雪崩

在某个时间段,缓存集中过期失效,Redis宕机

解决方案

  • Redis高可用 ====> 异地多活
  • 限流降级
  • 数据预热 ====> 数据加热的含义就是在正式部署之前,我先把可能的数据先预先访问一遍,这样部分可能大量访问的数据就会加载到缓存中

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读