【Redis面试题二:缓存击穿、缓存穿透、缓存雪崩】

目录

一、概念

   1.缓存击穿

   2.缓存穿透

   3.缓存雪崩

二、解决方案 

    1.解决缓存击穿

    2.解决缓存穿透

    3.解决缓存雪崩


一、概念

   1.缓存击穿

      突发热点访问时,热点数据在Redis缓存中不存在或已过期。大量的对热点数据的访问,都将直接访问数据库,造成数据库访问压力短时激,从而增造成故障。

【Redis面试题二:缓存击穿、缓存穿透、缓存雪崩】_第1张图片

   2.缓存穿透

       数据在Redis缓存和数据库中都不存在。大量访问这种数据时,数据库频繁查找数据,造成压力过大,从而产生故障。应用场景: 壹:非正常数据访问;贰:黑客攻击。

【Redis面试题二:缓存击穿、缓存穿透、缓存雪崩】_第2张图片

   3.缓存雪崩

       大量key集中过期,数据库短时访问量激增。类似击穿的发生场景。

【Redis面试题二:缓存击穿、缓存穿透、缓存雪崩】_第3张图片

二、解决方案 

      1.解决缓存击穿

  1. 提前预设热门缓存数据
  2. 实时调整过期时间、自动续期
  3. 使用锁
  4. 缓存数据不存在时,把数据库数据放入缓存

       2.解决缓存穿透

  1. 对不存在的数据进行数据空值缓存
  2. 设置白名单;(•可访问的数据id作为偏移值存入bitmaps;访问时先检查bitmaps)
  3. 使用布隆过滤器
  4. 对黑客攻击进行实时监控

       3.解决缓存雪崩

  1. 多级缓存架构(Nginx-本地缓存(ehcache/guava) -Redis)
  2. 锁或队列对并发访问进行序列化
  3. Key设置过期标志,对即将过期数据进行提前更新,自动续期(类似击穿的解决方案)
  4. 数据的过期时间使用随机值,分散过期时间

你可能感兴趣的:(缓存,redis,数据库,面试)