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 如何解决缓存雪崩?如何解决缓存穿透?如何保证缓存与数据库双写时一致的问题 ...
随机推荐
- 打开MCMC(马尔科夫蒙特卡洛)的黑盒子 - Pymc贝叶斯推理底层实现原理初探
我们在这篇文章里有尝试讨论三个重点.第一,讨论的 MCMC.第二,学习 MCMC 的实现过程,学习 MCMC 算法如何收敛,收敛到何处.第三,将会介绍为什么从后验分布中能返回成千上万的样本,也许读者和 ...
- quartz基本介绍和使用
一.什么是quartz,有什么用. Quartz是一个完全由java编写的开源作业调度框架,由OpenSymphony组织开源出来.所谓作业调度其实就是按照程序的设定,某一时刻或者时间间隔去执行某个代 ...
- markdown 转义字符
\\ 反斜杠 \` 反引号 \* 星号 \_ 下划线 \{\} 大括号 \[\] 中括号 \(\) 小括号 \# 井号 \+ 加号 \- 减号 \. 英文句号 \! 感叹号
- 通信传输利器Netty(Net is DotNetty)介绍
(先埋怨一下微软大大)我们做NET开发,十分羡慕JAVA上能有NETTY, SPRING, STRUTS, DUBBO等等优秀框架,而我们NET就只有干瞪眼,哎,无赖之前生态圈没做好,恨铁不成钢啊.不 ...
- SSL证书安装(Tomcat)腾讯云服务器
一.SSL证书免费领取地址一年的 https://www.toolmao.com/get-free-ssl 什么你们公司买的?每次免费领取一年,能不能轮流领取没试过.商鸡,商鸡.... 二.下载SSL ...
- python基础学习小结
Python是一门面向对象的解释性语言(脚本语言),这一类语言的特点就是不用编译,程序在运行的过程中,由对应的解释器向CPU进行翻译,个人理解就是一边编译一边执行.而JAVA这一类语言是需要预先编译的 ...
- Mysql查询库、表存储量(Size)
Mysql查询库.表存储量(Size) 1.要查询表所占的容量,就是把表的数据和索引加起来就可以了. SELECT SUM(DATA_LENGTH) + SUM(INDEX_LENGTH) FROM ...
- Linux samba服务器的搭建
目录 1. 安装samba 2. 配置smb.conf 3. 创建samba登陆用户 4. 创建samba共享文件夹 5. 重启samba服务 6. 访问samba共享文件夹 7. 参考资料 1. 安 ...
- 浏览器将URL变成一个屏幕上显示的网页的过程?
前言 一个浏览器是怎么工作的? 正文 URL变网页过程: 1.浏览器通过http或https协议,向服务端请求页面 2.将请求过来的HEML代码通过解析,构建DOM树 3.计算DOM树上的CSS属性 ...
- Java读取一个文本文件拼接成一个字符串(readFileToString)
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...