缓存雪崩

原因:缓存雪崩是并发量过大带来的一系列的雪崩效应。大量的请求涌入缓存导致缓存无法处理挂掉,接着大量的请求会涌入数据库导致数据库挂掉。

分析:处理此问题的关键就是避免并发量大的时候缓存不要挂掉,或者说即使挂掉一个缓存还会有备用的缓存顶上。

解决:Redis缓存模式

缓存穿透

原因:缓存穿透 是客户端发起一个缓存中不存在的请求需要进入数据库,这样数据量庞大的时候会导致数据库压力过大挂掉,如数据库中的某个ID不存在所以不会同步到缓存中,而请求不停的请求这个ID导致请求全部穿透缓存进入数据库查找,此时的缓存已经是摆设了。


分析
缓存穿透的几种情况:

  1. 查询非常规范围的ID 如: -1.-2,99999999等
  2. 查询某ID的数据已经被删除,该ID随属于正常ID范围但数据不存在
  3. 查询非热点数据,该数据不进入缓存

解决
解决方案就是针对特定的穿透方案进行解决

  1. 对于非常规ID进行范围限定,非正常范围内的ID直接返回
  2. 以删除数据的ID可以同步到缓存设置一个空值
  3. 非热点数据大量访问可能是攻击者,限制其访问

缓存击穿

原因:通常缓存会有过期时间,缓存过期后请求会进入数据库进行查询。并发量大的情况下,缓存过期的瞬间会造成大量请求涌入数据库导致数据库挂掉。

解决:缓存击穿的问题在于数据过期的瞬间如何处理

  1. 设置热点数据永不过期
  2. 加锁,当数据过期的瞬间,数据库内容到缓存时进行加锁。

缓存 雪崩 穿透 击穿相关推荐

  1. 关于缓存雪崩\穿透\击穿等一些问题

    前言 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透.缓存击穿与失效时的雪崩效应. 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到 ...

  2. 5redis-----------redis高级--GEO-查询附近的人、基数统计算法HLL 、布隆过滤器、缓存雪崩穿透击穿-------全栈式开发44

    redis高级 一.GEO查询附近的人 二.基数统计算法-HyperLogLog 三.布隆过滤器 四.缓存雪崩&缓存穿透 (一)缓存雪崩 (二)缓存穿透 (三)缓存击穿 一.GEO查询附近的人 ...

  3. 缓存雪崩、击穿、穿透解决方案

    用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了. 当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔溃的了,所以为了避免用户直接访 ...

  4. 老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透

    前文回顾 建议前一篇文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 过期策略 Redis 的过期策略都有哪些? 在聊这个问题之前,一定 ...

  5. 如何解决Redis缓存雪崩、击穿与穿透

    Redis最常用使用的场景就是作为业务系统的缓存,既然是作为缓存,那么就不免会碰到缓存常见的问题,即雪崩.击穿与穿透,什么是缓存雪崩.击穿与穿透以及如何解决这几个问题呢?今天我们一起来探讨一下! 一. ...

  6. Redis 缓存雪崩、击穿、穿透

    Redis 缓存雪崩.击穿.穿透 文章目录 Redis 缓存雪崩.击穿.穿透 一.Redis基础 Redis基本数据类型.操作 二.面试相关问题 1.小伙子您好,看你简历上写了你项目里面用到了Redi ...

  7. 面试填坑之Redis无底洞(一、Redis缓存雪崩、击穿、穿透)

    Redis缓存雪崩.击穿.穿透 学习自大佬:https://blog.csdn.net/qq_35190492/article/details/102889333 https://www.cnblog ...

  8. redis缓存雪崩、击穿、穿透

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.redis缓存雪崩 二.redis缓存击穿 三.redis缓存穿透 前言 主要是介绍一下redis缓存雪崩.击穿. ...

  9. Redis中的缓存雪崩、击穿、穿透的原因以及解决办法

    缓存雪崩.击穿.穿透一旦发生,会导致大量的请求积压到数据库层.如果请求的并发量很大,就会导致数据库宕机或是故障,这就是很严重的生产事故了. 俗话说,知己知彼,百战不殆.了解了问题的成因,我们就能够在应 ...

最新文章

  1. centos卸载harbor_【Harbor】Harbor镜像仓库的安装与历史版本镜像的清理
  2. jmeter中没有sampler_jmeter(七)-BeanShell常用内置变量和场景
  3. [密码学] 公钥密码基础与RSA
  4. 给分类添加缓存并解释StringRedisTemplate
  5. 你可能不知道的Docker资源限制
  6. [BZOJ 5074] 小B的数字
  7. 32位、64汇编区别
  8. oracle中的序列 cache,oracle row cache lock 之sequence
  9. 留下考题答案造福我校后来人(考试过后再看,不要抄袭)
  10. 闭包、循环setTimeout、立即执行函数
  11. 斯蒂夫乔布斯传札记:第九波
  12. PLSQL Developer 安装使用教程详解
  13. 详细讲解黑客常用的远程控制木马
  14. 浏览器打开163邮箱提示“登录环境异常,暂时无法登录”?可能是电脑在念旧……(NET::ERR_CERT_DATE_INVALID)
  15. 泊松分布与指数分布的理解
  16. kubernetes 使用kubectl port-forward 暴露端口访问应用
  17. 在同一个数据集中同时更新多表..............
  18. 基于主从博弈的智能小区代理商定价策略及 电动汽车充电管理matlab程序(yalmip+cplex)(yalmip+gurobi)
  19. Lotus Notes Send EMail from VB or VBA
  20. Rocky Linux更换yum源为国内源

热门文章

  1. 【博客529】linux cpu的 “steal time“含义
  2. linux开发板添加qt库文件_QT程序怎么移植到开发板并运行
  3. python颜色识别_浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
  4. 【数学公式】Mathpix和MathType等等
  5. ruoyi cloud集成casdoor
  6. 2019互联网月饼大赏,你公司有上榜吗?
  7. AutoCAD入门——斜线2
  8. vue在kooboo中的探索
  9. 程序员简历造假的后果!
  10. 百度广告联盟sdk接入遇到的坑