【Redis】聊一下缓存雪崩、击穿、穿透、预热
缓存的引入带来了数据读取性能的提升,但是因此也引入新的问题,一个是数据双写一致性,另一个就是雪崩、击穿、穿透,那么如何解决这些问题,我们来说下对应的问题和解决方案
雪崩
缓存雪崩:同一时间内大量请求无法从Redis缓存层获取数据,都将数据请求到数据库层,而导致数据库压力激增。
第一个原因:同一时间内缓存过期,导致无法处理请求
在正常情况下,数据从缓存读取到数据直接返回,但是当大量缓存同时过期时,比如1S内1W个请求从Redis读取不到数据,那么请求就直接打到MySQL中。MySQL负载会过高。

解决方案
1.通过为不同的key设置不同的过期时间,比如随机1-3分钟,以至于不会出现同一时间内大量key数据失效的情况。
2.保证核心业务数据的请求,非核心业务,直接返回配置化数据。也就是服务降级。
这里就要说一个在之前实际经历过的场景,由于业务人员开发的代码BUG,导致一个慢查询一天只会统计一次,但是由于逻辑问题,导致没有查询缓存,每次请求都直接打到数据库,而这个慢SQL很耗费资源,所以出现数据库负载过高,进一步影响到别的业务。
第二个原因:Redis实例宕机
另一个原因则是出现Redis单点宕机,整个缓存层服务无法使用,那么数据请求直接到数据层。
解决方案
一般来说我们需要对请求进行限流,以及降级的方式来保证核心业务的流转,然后非核心业务,直接降级不处理或者别的额方式。这样比直接全部流量进来之后,整个MySQL负载压力小很多。以及我们需要在搭建Redis时候采用主从架构,如果主机宕机,那么备机需要立马切换成主机。
击穿
雪崩是大量的缓存数据失效,而击穿针对的是某个热点key失效,比如微博热搜,top10 如果数据缓存失效,那么都直接达到数据库,数据库肯定承受不住,对于这种情况我们一般不要设置过期时间,以及采用提前预热的方式。
穿透
穿透是从缓存和数据库中都获取不到数据,如果有大量请求查询,那么对缓存和数据库会带来更大的压力。

出现的情况,第一要么认为的业务操作,误删除数据和缓存数据,第二个,有人为攻击。
解决方案
1.返回缺省值或者默认值。
2.使用布隆过滤器判断数据是否存在,减轻数据库压力。
3.前端拦截非法请求参数,不请求到数据库。
小结
雪崩是针对大量的缓存失效,而击穿是针对某个热点key,穿透是从数据库中获取不到数据了。

相关文章:
【Redis】聊一下缓存雪崩、击穿、穿透、预热
缓存的引入带来了数据读取性能的提升,但是因此也引入新的问题,一个是数据双写一致性,另一个就是雪崩、击穿、穿透,那么如何解决这些问题,我们来说下对应的问题和解决方案 雪崩 缓存雪崩:同一时间内大量请…...
全景描绘云原生技术图谱,首个《云原生应用引擎技术发展白皮书》发布
5月12日,由神州数码主办、北京经开区国家信创园、中关村云计算产业联盟协办的2023通明湖论坛-云原生分论坛在京召开。论坛期间,神州数码联合北京通明湖信息技术应用创新中心、中国信通院和通明智云正式发布了《云原生应用引擎技术发展白皮书》࿰…...
【Python共享文件】——Python快速搭建HTTP web服务实现文件共享并公网远程访问
文章目录 1. 前言2. 视频教程3. 本地文件服务器搭建3.1 python的安装和设置3.2 cpolar的安装和注册 4. 本地文件服务器的发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6. 结语 1. 前言 数据共享作为和连接作为互联网的基础应用,不仅在商业和办公场景有…...
Mysql数据库分库分表
为什么使用分库分表? 传统的将数据集中存储至单一数据节点的解决方案,在性能、可用性和运维成本这三方面已经难于满足互联网的海量数据场景。 1)性能 从性能方面来说,由于关系型数据库大多采用 B 树类型的索引,在数…...
SpringBoot热部署插件原理分析及实战演练
目录 1、关于热部署(Hot Deploy)产生的背景 1)热部署出现前 2)热部署出现后 2、spring-boot-devtools插件原理 1)解决变更文件自动加载到JVM中 2)spring-boot-devtools重启速度比手动重启快 3、关于…...
【C++ 入坑指南】(10)函数
文章目录 简介定义实例函数的分文件编写 简介 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定…...
P2233 [HNOI2002]公交车路线
题目描述 在长沙城新建的环城公路上一共有 8 个公交站,分别为 A、B、C、D、E、F、G、H。公共汽车只能够在相邻的两个公交站之间运行,因此你从某一个公交站到另外一个公交站往往要换几次车,例如从公交站 A 到公交站 D,你就至少需要…...
java入门-W11(K168-K182)网络编程
1. 网络编程入门 1.1 网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统…...
距离6月18日DAMA-CDGA/CDGP认证考试还有31天,报名从速
6月18日DAMA-CDGA/CDGP数据治理认证考试开放报名中! 考试开放地区:北京、上海、广州、深圳、长沙、呼和浩特、杭州、南京、济南、成都、西安。其他地区凑人数中… DAMA-CDGA/CDGP数据治理认证班进行中,报名从速! DAMA认证为数据管…...
PO、VO、DAO、BO、DTO、POJO区分
一 分层领域模型规约: DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。BO(Business Object):业务对象,由 Service 层输出的封装…...
MobPush Flutter平台插件
集成准备 注册账号 使用PushSDK之前,需要先在MobTech官网注册开发者账号,并获取MobTech提供的AppKey和AppSecret,详情可以点击查看注册流程 MobPush后台配置 注册MobTech账号后,需要在MobTech后台进行相关信息的配置ÿ…...
机器学习面试题库:K-means
一、简述K-means算法的原理及工作流程? 原理: K-means是一个无监督的聚类算法。它的主要目的是对同一组数据对象进行分类。其原理是基于样本间的相似性来聚类分析的,即将所有样本分为K个簇,使得同一个簇间中样本相似性最高&#…...
Linux:文本三剑客之awk
Linux:文本三剑客之awk 一、awk编辑器1.1 awk概述1.2 awk工作原理1.3 awk与sed的区别 二、awk的应用2.1 命令格式2.2 awk常见的内建变量(可直接用) 三、awk使用3.1 按行输出文本3.2 按字段输出文本3.3 通过管道、双引号调用 Shell 命令 一、a…...
如何借助Kafka持久化存储K8S事件数据?
大家应该对 Kubernetes Events 并不陌生,特别是当你使用 kubectl describe 命令或 Event API 资源来了解集群中的故障时。 $ kubectl get events15m Warning FailedCreate …...
一种基于非均匀分簇和建立簇间路由的算法的无线传感器网络路由协议(Matlab代码实现)
目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨💻4 Matlab代码 💥1 概述 本文准备了一种路由方法,该方法使传感器通过有效地使用能量将数据从发送方加载到接收器,因为它在 LEAC…...
usb摄像头驱动打印信息
usb摄像头驱动打印信息 文章目录 usb摄像头驱动打印信息 在ubuntu中接入罗技c920摄像头打印的信息如下: [ 100.873222] usb 3-2: new high-speed USB device number 5 using xhci_hcd [ 101.230728] usb 3-2: New USB device found, idVendor046d, idProduct08e5 …...
银行半结构化和无领导群面注意事项
银行可以同时报考多家,因此部分同学也积累了不少宝贵的面试“失败”经验。今天小编就来给大家说说半结构化和无领导群面的注意事项,从如信银行考试中心了解到的整理如下: 一、半结构化面试注意事项: 半结构化面试更侧重于了解考生…...
今天公司来了个拿 30K 出来的测试,算是见识到了基础的天花板
今天上班开早会就是新人见面仪式,听说来了个很厉害的大佬,年纪还不大,是上家公司离职过来的,薪资已经达到中高等水平,很多人都好奇不已,能拿到这个薪资应该人不简单,果然,自我介绍的…...
SSM整合(单元测试、结果封装、异常处理)
文章目录 1,SSM整合1.1 流程分析1.2 整合配置步骤1:创建Maven的web项目步骤2:添加依赖步骤3:创建项目包结构步骤4:创建SpringConfig配置类步骤5:创建JdbcConfig配置类步骤6:创建MybatisConfig配置类步骤7:创建jdbc.properties步骤8:创建SpringMVC配置类步…...
C++ list
C list 📟作者主页:慢热的陕西人 🌴专栏链接:C 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容介绍了C中list和相关接口的使用 Clist C listⅠ. li…...
CHORD-X性能调优实战:针对长报告生成的显存与计算优化策略
CHORD-X性能调优实战:针对长报告生成的显存与计算优化策略 你是不是遇到过这种情况:用CHORD-X生成一份几十页的详细报告,结果要么是显存直接爆掉,要么就是生成速度慢得像蜗牛爬?特别是当报告内容涉及大量数据分析、图…...
实战UDOP-large:批量处理英文PDF,自动提取关键信息
实战UDOP-large:批量处理英文PDF,自动提取关键信息 1. 为什么选择UDOP-large处理英文文档? 在日常工作中,我们经常需要处理大量英文PDF文档——学术论文、商业报告、财务报表、技术文档等。传统的人工处理方式效率低下且容易出错…...
OpenClaw多语言支持:Qwen3-4B处理跨境文档翻译与格式转换
OpenClaw多语言支持:Qwen3-4B处理跨境文档翻译与格式转换 1. 为什么需要本地化多语言文档处理 上个月我收到一份日文技术手册,需要翻译成英文和韩文版本。尝试过主流云翻译平台后,发现三个痛点:一是敏感内容上传公有云有风险&am…...
接触电阻波动10mΩ?医疗连接器导电性能的隐形红线
从事连接器工程整整10年,今天想跟医疗设备行业的各位同行,聊一个最容易被忽略、却最容易出大问题的细节——医疗连接器的接触电阻波动。相信很多做设备选型的工程师都有过这样的经历:选连接器时,盯着规格书上的初始接触电阻值看&a…...
实时行情系统设计:从协议选择到高可用架构,再到数据源选型睬
一、核心问题及解决方案(按踩坑频率排序) 问题 1:误删他人持有锁——最基础也最易犯的漏洞 成因:释放锁时未做身份校验,直接执行 DEL 命令删除键。典型场景:服务 A 持有锁后,业务逻辑耗时超过锁…...
一文讲清,精益六西格玛咨询是什么意思?做精益六西格玛咨询对企业有什么用?
精益六西格玛咨询到底是什么?简单来说,精益六西格玛咨询是一种将精益生产的效率与六西格玛的质量管理相结合的系统化服务,旨在帮助企业消除浪费并减少变异。通过引入精益六西格玛咨询,企业能够利用数据驱动的方法解决复杂的管理难…...
F-Theta扫描透镜的性能评估
摘要F-Theta透镜通常用于基于扫描式的激光材料加工系统。使用这种透镜,聚焦光斑沿目标平面的位移与透镜焦距和扫描角度的乘积成正比。然而,不存在完美的F-Theta系统,因此在任何给定的系统中,偏离理想行为的偏差都是可以预期的。借…...
Flutter 框架跨平台鸿蒙开发 - 亲子故事共创
亲子故事共创应用欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net 一、项目概述 运行效果图1.1 应用简介 亲子故事共创是一款亲子教育类应用,核心理念是"父母孩子一起创作专属故事书"。通过角色设定、剧情分支、插图生…...
# MyBatis Mapper文件不想手动注册?启动时自动扫描conf目录,动态拼配置
MyBatis Mapper文件不想手动注册?启动时自动扫描conf目录,动态拼配置 非科班野生程序员,深耕政务信息化20年。从VC到PB再到Java,自研框架browise也打磨了十几年。最近整理框架代码,发现不少有趣的决策,写出…...
Hypersistence Utils标识符生成器完全教程:BatchSequence、TSID和SequenceOptimizer
Hypersistence Utils标识符生成器完全教程:BatchSequence、TSID和SequenceOptimizer 【免费下载链接】hypersistence-utils The Hypersistence Utils library (previously known as Hibernate Types) gives you Spring and Hibernate utilities that can help you g…...
