redis的雪崩与穿透原理的浅理解
首先列一下主要说什么,
1、什么是Redis缓存的雪崩?
2、什么是Redis缓存的穿透?
3、Redis缓存崩溃会怎么样?
4、怎么预防Redis缓存崩溃?
1、什么是Redis缓存的雪崩?
举个栗子:有系统A,每天高峰期每秒有5000个请求,缓存机抗4000,数据库最大阈值抗2000,本来系统缓存机可以抗住4000个请求,但是系统缓存机突然死翘翘宕机了,也就是缓存挂了。这个时候来的5000个请求全部砸到了数据库,远超数据库的可承受范围。数据库也可是傻眼了于是乎就业跟着挂了,系统本身也没有预制应急方案,没办法系统没有优质方案解决,重启数据库又不能有效解决,因为重启后又马上被干死了。当遇到这个场景的时候我就可以理解为缓存的雪崩。

2、缓存雪崩的解决发案
事前:Redis高可用,主从+哨兵。避免全盘崩溃。
哨兵的作用:
1、监控redis进行状态,包括master和slave
2、当master down机,能自动将slave切换成master
看到上边的作用,大概就知道怎么个原理了吧。可以配置多个或者一个主从。同时也可以配置多个哨兵。尽量做到有备份的效果。
缓存往往都设置有失效时间,在设置的时候需要注意避免大量缓存同时失效。可以设置缓存的有效期在某一个随机的有效期内,同时失效也在随机的一个有效期内。
具体的配置暂不说明,先把原理搞清楚了,在去实操巩固,实操部分后续补充。
事中:本地ehcache缓存+hystrix限流&降级。避免数据库被打死。
大致理解如下:系统接受到请求后先查本地ehcache再查Redis,如果都没有则再去查数据库,并同时将相关数据重新写入Redis和本地缓存中。避免下次再去请求时再访问数据库。
同时可以设置限流降级,当请求数大于系统所能够处理的请求数时,通过限流组件起到超出的部分走降级,不进行处理,确保系统核心功能一直处于可用状态。
事后:Redis做持久化处理,一旦重启,自动从磁盘上加载数据,快速恢复缓存数据。
2、什么是Redis缓存的穿透?
还是举个栗子:对于系统A,假设高峰期一秒有5000个请求需要处理,结果其中4000个请求是恶意攻击所发出的。那么这4000个请求在缓存中查不到并且数据中也查不到。比如数据库存储的数据ID范围是1~500 ,而实际查询完全不在这个范围内。这样就导致每次查询的命中率为0.。这种场景就可以被理解为缓存穿透。
对此应该怎么解决呢?可以采用一种简单的方式,每次系统A从数据库中要是没有查到就写一个空值到缓存,或者将查询进行标记,下次将接受的请求进行标记比对,最终要实现出现重复的或者没有空值均走缓存进行处理。
redis的雪崩与穿透原理的浅理解的更多相关文章
- 8.了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透?
作者:中华石杉 面试题 了解什么是 redis 的雪崩.穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透? 面试官心理分析 其实这是问到缓存必问的,因为缓 ...
- Redis 缓存雪崩、穿透、击穿
缓存雪崩 定义: 同一时间所有 key 大面积失效,比如网站首页的数据基本上都是同一批次去缓存的. 解决方法: ① 存的时候设定随机的失效时间. ② 服务做熔断处理(异常或着慢查询 Hystrix 限 ...
- redis缓存雪崩、穿透、击穿概念及解决办法
缓存雪崩 对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机.缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据 ...
- 什么是redis的雪崩和穿透
缓存雪崩 如何应对缓存雪崩 首先要保证redis的高可用,可以使用redis cluster,开启redis持久化,redis之前要使用本地缓存,请求先走本地缓存,没找到再走redis 如果还是出现了 ...
- 【redis】redis的雪崩和穿透
1.什么是缓存穿透 一般的缓存系统,都是按照key值去缓存查询,如果不存在对应的value,就应该去DB中查找 .这个时候,如果请求的并发量很大,就会对后端的DB系统造成很大的压力.这就叫做缓存穿透. ...
- 什么是 redis 的雪崩、穿透和击穿?
缓存雪崩 对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机.缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据 ...
- 关于redis的几件小事(七)redis缓存雪崩与穿透
1.缓存雪崩 (1)什么是缓存雪崩 缓存雪崩指的是在同一时刻,缓存大量失效,导致大量的请求直接到了数据库,数据库压力剧增,引起系统崩溃.可能出现的情况有: ①大量的key设置了相同的过期时间,导致在缓 ...
- 面试系列19 redis的雪崩和穿透
缓存雪崩发生的现象 缓存雪崩的事前事中事后的解决方案 事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃 事中:本地ehcache缓存 + hystrix限流&降级, ...
- Redis缓存雪崩和穿透的解决方法
转载自: https://blog.csdn.net/qq_35433716/article/details/86375506 如何解决缓存雪崩?如何解决缓存穿透?如何保证缓存与数据库双写时一致的问题 ...
随机推荐
- 如何为 Jupyter Notebook 安装代码提示功能
按照上一篇博客安装完 Python 和 Jupyter Notebook 后,我们已经可以使用 Notebook 愉快的编写 Python 代码了,但是发现它不像其他编辑器那样会弹出代码提示,这稍微有 ...
- Dynamics CRM 日常使用JS整理(三)
一.指定 Partylist 类型字段能 lookup 的实体(以 Appointment 中某个字段为例子): var control = Xrm.Page.getControl("req ...
- HDU 2717(* bfs)
题意是在一个数轴上,每次可以一步到达当前位置数值的 2 倍的位置或者数值 +1 或数值 -1 的位置,给定 n 和 k,问从数值为 n 的位置最少多少步可以到达数值为 k 的位置. 用广搜的方法,把已 ...
- content+animation实现loading效果
<dot></dot> dot { display: inline-block; height: 1em; line-height: 1; vertical-align: -. ...
- 关于JS数组的栈和队列操作
1.js支持重载吗? 虽然js 本身并没有函数重载,但是可以用arguments来模拟重载,函数名相同,参数不同,arguments的length属性,获取参数个数,索引属性获取参数值 2.什么是作用 ...
- MyRolan (快速启动小工具)
类似 Rolan的快速启动工具. 启动后隐藏,当鼠标移至左上角时,窗口显示,点击项目可运行程序. GitHub地址: MyRolan . #if defined(UNICODE) && ...
- idea2017.2.2注册
IntelliJ IDEA 2017.2 破解(注册) 2017年08月10日 11:13:45 筱进GG 阅读数:2849更多 个人分类: IntelliJ IDEA 下载IntelliJ ID ...
- stringify()和parse()的区别
记录一下小知识点,大神略过... 一:JSON.parse()[从一个字符串中解析出json对象] 例子: //定义一个字符串 var data='{"name":"go ...
- Doom HDU - 5239 (找规律+线段树)
题目链接: D - Doom HDU - 5239 题目大意:首先是T组测试样例,然后n个数,m次询问,然后每一次询问给你一个区间,问你这个这段区间的加上上一次的和是多少,查询完之后,这段区间里 ...
- 最大K段和题解
题目:XJOI335 传送门 [ >XJOI<] 重要提示:您的膜法等级必须达到3级6段才可使用本传送门,否则您会被小猫痛扁 因为博主太懒,不提供题面(QAQ)... 很容易想到使用DP, ...