Redis面试题-缓存雪崩、缓存穿透、缓存击穿问题

1 穿透: 两边都不存在(皇帝的新装) (黑名单) (布隆过滤器)

2 穿:一个热点的key失效了,这时大量的并发请求直接到达数据库. (提前预热

3 雪崩:大量key同时失效 (避免大量的key同一时间失效,错峰

缓存击穿


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

   缓存穿透


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

缓存雪崩


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

二、解决方案 
      1.解决缓存击穿
提前预设热门缓存数据
实时调整过期时间、自动续期
使用锁
缓存数据不存在时,把数据库数据放入缓存
       2.解决缓存穿透
对不存在的数据进行数据空值缓存
设置白名单;(•可访问的数据id作为偏移值存入bitmaps;•访问时先检查bitmaps)
使用布隆过滤器
对黑客攻击进行实时监控
       3.解决缓存雪崩
多级缓存架构(Nginx-本地缓存(ehcache/guava) -Redis)
锁或队列对并发访问进行序列化
Key设置过期标志,对即将过期数据进行提前更新,自动续期(类似击穿的解决方案)
数据的过期时间使用随机值,分散过期时间

相关推荐

  1. Redis缓存击穿缓存雪崩缓存穿透

    2024-03-29 16:56:03       56 阅读
  2. Redis中的缓存雪崩缓存击穿缓存穿透问题

    2024-03-29 16:56:03       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-29 16:56:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-29 16:56:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-29 16:56:03       82 阅读
  4. Python语言-面向对象

    2024-03-29 16:56:03       91 阅读

热门阅读

  1. git之目前的主流版本

    2024-03-29 16:56:03       51 阅读
  2. day 41 动归 04

    2024-03-29 16:56:03       44 阅读
  3. RocketMq总结

    2024-03-29 16:56:03       38 阅读
  4. Sql中如何添加数据

    2024-03-29 16:56:03       37 阅读
  5. Python获取当前服务器的公网IP

    2024-03-29 16:56:03       41 阅读
  6. 【[蓝桥杯 2013 省 B] 带分数】

    2024-03-29 16:56:03       41 阅读