尚硅谷官方bilibili视频教程:https://www.bilibili.com/video/BV1Rv41177Af?p=43

一、什么是缓存雪崩

概念:

key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。
缓存雪崩与缓存击穿的区别在于这里针对很多key缓存,前者则是某一个key.

正常访问:
缓存失效瞬间

二、解决方案

缓存失效时的雪崩效应对底层系统的冲击非常可怕!
解决方案:

  1. 构建多级缓存架构:nginx缓存 + redis缓存 +其他缓存(ehcache等)这样即使redis缓存key过期失效了还有其他的缓存,这样可以降低发生缓存雪崩的风险。缺点是这样软件的架构会很复杂、
  2. 使用锁或队列:用加锁或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上。不适用高并发情况
  3. 设置过期标志更新缓存:记录缓存数据是否过期(设置提前量),如果过期会触发通知另外的线程在后台去更新实际key的缓存。
  4. 将缓存失效时间分散开:比如我们可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。

redis面试常问--缓存雪崩相关推荐

  1. Redis面试常问3 如何实现分布式锁 记住Redis的原子性

    Redis面试常问3 如何实现分布式锁 上面的伪代码有问题 从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改: http://redisdoc.com/string ...

  2. Redis面试常问2-- 从海量数据里查询某一固定前缀的key? SCAN cursor

    从海量数据里查询某一固定前缀的key? 问题背景: 面试官问,如何从10亿个数据中,找到某一个固定前缀的10万个key? 注意:面试官问的细节 多点问面试官一些细节相关的问题,摸清楚数据规模 问清楚面 ...

  3. Redis面试常问4-- 如何实现异步队列 Blpop key timeout

    感谢老王的思路 作者:老王的博客 来源:CSDN 原文:https://blog.csdn.net/wzbwzh/article/details/82876299 版权声明:本文为博主原创文章,转载请 ...

  4. Redis面试常问-- Redis常用数据类型

    Redis常用数据类型 http://www.redis.cn/

  5. 手撸架构,Redis面试41问

    技术栈 传送门 JAVA 基础 手撸架构,Java基础面试100问_vincent-CSDN博客 JAVA 集合 手撸架构,JAVA集合面试60问_vincent-CSDN博客 JVM 虚拟机 手撸架 ...

  6. GET 和 POST 的区别(重要,面试常问)

    GET 和 POST 的区别(重要,面试常问) 1.GET 在浏览器回退时是无害的,而 POST 会再次提交请求. (get:不会再次发送请求:post:浏览器会继续向URI发送请求) 2.GET 产 ...

  7. Java面试常问计算机网络问题

    转载自   Java面试常问计算机网络问题 一.GET 和 POST 的区别 GET请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:/test/demo_form.asp?na ...

  8. MySQL面试常问大全

    MySQL面试常问大全 1.关系型数据库和非关系型数据库的区别? 其实很好理解,先说一下最直白的的区别,关系型数据库中的数据有关系,非关系型数据库的数据无关系: 关系型数据库(Mysql和Oracle ...

  9. 计算机考研复试面试常问问题 数据库篇

    计算机考研复试面试常问问题 数据库篇 在复习过程中,我用心查阅并整理了在考研复试面试中可能问到的大部分问题,并分点整理了答案,可以直接理解背诵并加上自己的语言润色!极力推荐打印下来看,效率更高!绝对良 ...

  10. Java基础(以及面试常问问题)

    1.Vector,ArrayList, LinkedList的区别(面试常问到的) 三者都是实现集合框架中的List,也就是所谓有序集合,因此具体功能比较近似,比如都提供按照位置进行定位.添加或删除的 ...

最新文章

  1. Shinning - 我所听过最棒的演讲
  2. 计算机学术硕士课题,硕士学术论文选题的原则分析
  3. 基于MaxCompute的数仓数据质量管理
  4. 电脑的引导启动快捷键
  5. 信息学奥赛一本通 2028:【例4.14】百钱买百鸡
  6. mysql查询top5_MySQL常用函数TOP5
  7. 【LaTeX】LaTeX符号大全
  8. 博世传感器调试笔记(二)加速度及陀螺仪传感器BMI160
  9. 如何管理员工工时表?
  10. PPT全屏错误 显示不全
  11. Python 获取车票信息
  12. 【论文分享】ACL 2020 立场检测相关研究
  13. 07.极限的四则运算法则
  14. 如何让全链路压测落地?
  15. 随机信号处理笔记 - ING
  16. 解决npm一直停在“checking installable status“的问题
  17. 计算机英语背单词技巧,闽教小学英语快速单词记忆法,怎么背单词下午、计算机、教室、长颈鹿、请...
  18. Swordfish -- SOA运行时框架
  19. 【linux系统如何安装arm交叉编译工具链】
  20. NR HARQ(二) CBG HARQ-ACK codebook

热门文章

  1. Strom 可定制任务调度策略(Pluggable Scheduler)
  2. 工作流软件是未来web的支柱
  3. Kruskal/Prim/Dijkstra模板
  4. String replaceAll 方法的问题?
  5. JavaScript通用库(转)
  6. 5.软件架构设计:大型网站技术架构与业务架构融合之道 --- 网络
  7. 9.企业安全建设入门(基于开源软件打造企业网络安全) --- SOC系统建设
  8. 7.Shell 编程从入门到精通 --- 流编辑
  9. 153. php 引用
  10. JSP中报错only a type can be imported XXX resolves to package