缓存 雪崩 穿透 击穿
缓存雪崩
原因:缓存雪崩是并发量过大带来的一系列的雪崩效应。大量的请求涌入缓存导致缓存无法处理挂掉,接着大量的请求会涌入数据库导致数据库挂掉。
分析:处理此问题的关键就是避免并发量大的时候缓存不要挂掉,或者说即使挂掉一个缓存还会有备用的缓存顶上。
解决:Redis缓存模式
缓存穿透
原因:缓存穿透 是客户端发起一个缓存中不存在的请求需要进入数据库,这样数据量庞大的时候会导致数据库压力过大挂掉,如数据库中的某个ID不存在所以不会同步到缓存中,而请求不停的请求这个ID导致请求全部穿透缓存进入数据库查找,此时的缓存已经是摆设了。
分析 :
缓存穿透的几种情况:
- 查询非常规范围的ID 如: -1.-2,99999999等
- 查询某ID的数据已经被删除,该ID随属于正常ID范围但数据不存在
- 查询非热点数据,该数据不进入缓存
解决
解决方案就是针对特定的穿透方案进行解决
- 对于非常规ID进行范围限定,非正常范围内的ID直接返回
- 以删除数据的ID可以同步到缓存设置一个空值
- 非热点数据大量访问可能是攻击者,限制其访问
缓存击穿
原因:通常缓存会有过期时间,缓存过期后请求会进入数据库进行查询。并发量大的情况下,缓存过期的瞬间会造成大量请求涌入数据库导致数据库挂掉。
解决:缓存击穿的问题在于数据过期的瞬间如何处理
- 设置热点数据永不过期
- 加锁,当数据过期的瞬间,数据库内容到缓存时进行加锁。
缓存 雪崩 穿透 击穿相关推荐
- 关于缓存雪崩\穿透\击穿等一些问题
前言 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透.缓存击穿与失效时的雪崩效应. 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到 ...
- 5redis-----------redis高级--GEO-查询附近的人、基数统计算法HLL 、布隆过滤器、缓存雪崩穿透击穿-------全栈式开发44
redis高级 一.GEO查询附近的人 二.基数统计算法-HyperLogLog 三.布隆过滤器 四.缓存雪崩&缓存穿透 (一)缓存雪崩 (二)缓存穿透 (三)缓存击穿 一.GEO查询附近的人 ...
- 缓存雪崩、击穿、穿透解决方案
用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了. 当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔溃的了,所以为了避免用户直接访 ...
- 老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透
前文回顾 建议前一篇文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 过期策略 Redis 的过期策略都有哪些? 在聊这个问题之前,一定 ...
- 如何解决Redis缓存雪崩、击穿与穿透
Redis最常用使用的场景就是作为业务系统的缓存,既然是作为缓存,那么就不免会碰到缓存常见的问题,即雪崩.击穿与穿透,什么是缓存雪崩.击穿与穿透以及如何解决这几个问题呢?今天我们一起来探讨一下! 一. ...
- Redis 缓存雪崩、击穿、穿透
Redis 缓存雪崩.击穿.穿透 文章目录 Redis 缓存雪崩.击穿.穿透 一.Redis基础 Redis基本数据类型.操作 二.面试相关问题 1.小伙子您好,看你简历上写了你项目里面用到了Redi ...
- 面试填坑之Redis无底洞(一、Redis缓存雪崩、击穿、穿透)
Redis缓存雪崩.击穿.穿透 学习自大佬:https://blog.csdn.net/qq_35190492/article/details/102889333 https://www.cnblog ...
- redis缓存雪崩、击穿、穿透
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.redis缓存雪崩 二.redis缓存击穿 三.redis缓存穿透 前言 主要是介绍一下redis缓存雪崩.击穿. ...
- Redis中的缓存雪崩、击穿、穿透的原因以及解决办法
缓存雪崩.击穿.穿透一旦发生,会导致大量的请求积压到数据库层.如果请求的并发量很大,就会导致数据库宕机或是故障,这就是很严重的生产事故了. 俗话说,知己知彼,百战不殆.了解了问题的成因,我们就能够在应 ...
最新文章
- centos卸载harbor_【Harbor】Harbor镜像仓库的安装与历史版本镜像的清理
- jmeter中没有sampler_jmeter(七)-BeanShell常用内置变量和场景
- [密码学] 公钥密码基础与RSA
- 给分类添加缓存并解释StringRedisTemplate
- 你可能不知道的Docker资源限制
- [BZOJ 5074] 小B的数字
- 32位、64汇编区别
- oracle中的序列 cache,oracle row cache lock 之sequence
- 留下考题答案造福我校后来人(考试过后再看,不要抄袭)
- 闭包、循环setTimeout、立即执行函数
- 斯蒂夫乔布斯传札记:第九波
- PLSQL Developer 安装使用教程详解
- 详细讲解黑客常用的远程控制木马
- 浏览器打开163邮箱提示“登录环境异常,暂时无法登录”?可能是电脑在念旧……(NET::ERR_CERT_DATE_INVALID)
- 泊松分布与指数分布的理解
- kubernetes 使用kubectl port-forward 暴露端口访问应用
- 在同一个数据集中同时更新多表..............
- 基于主从博弈的智能小区代理商定价策略及 电动汽车充电管理matlab程序(yalmip+cplex)(yalmip+gurobi)
- Lotus Notes Send EMail from VB or VBA
- Rocky Linux更换yum源为国内源