Redis雪崩效应以及解决方案

【YOLO 系列】基于YOLOv8的工业零件表面缺陷智能检测系统【python源码+Pyqt5界面+数据集+训练代码】 本文详细介绍了如何基于YOLOv8深度学习模型和PyQt5图形界面,构建一套完整的工业零件表面缺陷智能检测系统。内容涵盖从环境搭建、数据集标注、模型训练调参到最终封装成可执行桌面软件的全流程,并深入解析了YOLOv8在工业视觉场景中的技术优势与落地优化策略。 阅读详情

缓存雪崩产生的原因

 

缓存雪崩通俗简单的理解就是:由于原有缓存失效(或者数据未加载到缓存中),新缓存未到期间(缓存正常从Redis中获取,如下图)所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机,造成系统的崩溃。

 

缓存失效的时候如下图:

 

缓存失效时的雪崩效应对底层系统的冲击非常可怕!那有什么办法来解决这个问题呢?基本解决思路如下:

  第一,大多数系统设计者考虑用加锁或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,避免缓存失效时对数据库造成太大的压力,虽然能够在一定的程度上缓解了数据库的压力但是与此同时又降低了系统的吞吐量。

 第二,分析用户的行为,尽量让缓存失效的时间均匀分布。

 第三,如果是因为某台缓存服务器宕机,可以考虑做主备,比如:redis主备,但是双缓存涉及到更新事务的问题,update可能读到脏数据,需要好好解决。

 

解决方案

 

1:在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。

     注意:加锁排队只是为了减轻数据库的压力,并没有提高系统吞吐量。假设在高并发下,缓存重建期间key是锁着的,这是过来1000个请求999个都在阻塞的。同样会导致用户等待超时,这是个治标不治本的方法。

2:不同的key,设置不同的过期时间,让缓存失效的时间点尽量均匀。

3:做二级缓存,A1为原始缓存,A2为拷贝缓存,A1失效时,可以访问A2,A1缓存失效时间设置为短期,A2设置为长期(此点为补充)

 

架构如下所示时候:

 

如何攻击redis?

如果再redis中有1000个key,如果同一时间失效?   直接查数据库了 不再走redis了 ! 大连查询请求过来,,,,产生了雪崩效应~

这时候使用 限流 服务降级、熔断 的方案  这三个方案是针对redis的上一层的

 

Redis雪崩效应的解决方案

1、可以使用分布式锁   单机版的话本地锁

2、消息中间件方式

3、一级和二级缓存 Redis+Ehchache

4、均摊分配Redis的key的失效时间

 

解释:

 1、  当突然有大量请求到数据库服务器时候,进行请求限制。使用所的机制,保证只有一个线程(请求)操作。否则进行排队等待(集群分布式锁,单机本地锁)。减少服务器吞吐量,效率低。

 

 加入锁!

 

保证只能有一个线程进入  实际上只能有一个请求在执行查询操作

也可以在此处进行使用限流的策略~

 

2、使用消息中间件解决

  这种方案是最靠谱的方案!

   消息中间件 可以解决高并发!!!

  如果大量的请求进行访问时候,Redis没有值的情况,会将查询的结果存放在消息中间件中(利用了MQ异步步特性)

   查不到时候 走MQ  

 

 

如果redis查询不到结果的情况,这个时候直将该消息放到中间件,

消费者最多能够承受50个消息

如果生产者发送100个消息,有90个请求等待ing.....

 

 

 3、一级二级缓存参考: https://www.cnblogs.com/toov5/p/9892910.html

 

4、均摊分配redis key的失效时间 

     不让在同一时间失效,不同key失效时间不同 哈哈

Yolov8-pose关键点检测:通用倒瓶颈(UIB)搜索块结合C2f二次创新 | 轻量化之王MobileNetV4 通用倒瓶颈(UIB)搜索块结合C2f二次创新 阅读详情

相关推荐

CocosCreator视频播放黑屏?手把手教你封装VideoPlayer组件解决Web环境问题

本文针对Cocos Creator在Web环境下视频播放黑屏等常见问题,提供了一套工程化的VideoPlayer组件封装解决方案。文章深入剖析了浏览器自动播放策略、DOM样式隔离等核心挑战,并手把手教你实现一个健壮的管理器,涵盖兼容性处理、性能优化与内存管理,确保视频播放稳定流畅。

plum99的博客 598

数据库 | Redis 缓存雪崩解决方案

Redis 雪崩 缓存层承载着大量的请求,有效保护了存储层。但是如果由于缓存大量失效或者缓存整体不能提供服务,导致大量的请求到达存储层,会使存储层负载增加,这就是缓存雪崩的场景。 解决缓存雪崩,可以从以下几个方面入手。 1.保持缓存层的高可用性 使用Redis 哨兵模式或者Redi...

weixin_30480583的博客 1354

DAIC-WOZ抑郁数据集实战:从申请到特征提取的全流程避坑指南

本文详细解析了DAIC-WOZ抑郁数据集从申请到特征提取的全流程,提供了实用的避坑指南和代码模板。涵盖数据获取技巧、多模态特征工程(面部动作单元、音频特征、文本处理)以及样本不平衡解决方案,帮助研究者高效处理这一经典抑郁分析数据集。

weixin_29196315的博客 171

Redis缓存雪崩问题:原理、解决方案与最佳实践

在使用Redis作为缓存系统时,缓存雪崩是一个常见的问题。缓存雪崩是指缓存中大量数据同时过期,导致大量请求直接到达数据库,从而导致数据库压力增大。本文将介绍Redis缓存雪崩问题的原理、解决方案以及最佳实践。二、Redis缓存雪崩问题的解决方案。三、Redis缓存雪崩问题的最佳实践。一、Redis缓存雪崩问题的原理。

My_wife_QBL的博客 1878

问题解决:打开VMware创建的虚拟机,电脑立刻蓝屏并重启

VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credenti

weixin_55118477的博客 3万+

使用ChIPSeeker进行ChIP-seq, ATAC-seq,cut&tag等富集峰的基因组注释

常规的下一代高通量测序(next generation sequencing, NGS)实验通常产生大量短片段(reads),通常我们需要将这些reads比对到参考基因组/转录组上,即将它们置于生物学上有意义的基因背景下,才能获得有意义的结果。一般我们认为会产生两种类型的数据(当然两者并无严格意义上的区分)

微生信 3318

redis雪崩问题处理办法

Redis雪崩问题是指在缓存大面积失效或者缓存集中到期时,大量的请求同时涌入数据库,导致数据库负载急剧增加,从而引发的一系列问题。在缓存集中到期之前,提前对热点数据进行预热,将热点数据提前加载到缓存中,避免缓存失效时大量请求涌入数据库。使用多级缓存策略,将缓存数据分散到不同的缓存节点或者不同的缓存服务器中,减少缓存集中到期的风险。可以监控缓存的命中率、缓存失效率、数据库负载等指标,及时发现潜在的雪崩风险。可以采用随机过期时间,将缓存过期时间分散开来,减少缓存同时失效的概率。

Li_789的博客 749

get_seed协议

【代码】get_seed协议。

a545958498的博客 910

Redis雪崩以及解决方法

Redis中大量缓存数据在同一时间过期(失效)或者Redis故障宕机时,如果此时有大量的用户请求,都无法在Redis中处理,于是全部请求都直接访问数据库,从而导致数据库的压力骤增,严重的会造成数据库宕机,从而形成一系列连锁反应,造成整个。2.缓存空值或者默认值,当发现缓存穿透的现象时,可以针对查询的数据,在缓存中设置一个空值或者默认值,这样后续请求就可以从缓存中读取到空值或者默认值,返回给应用,使其不会继续查询数据库。,导致请求在访问缓存时,发现缓存缺失,再去访问数据库时,发现数据库中也没有要访问的数据。

2401_83691559的博客 755

数据结构(超详细讲解!!)第十七节 队列应用(杨辉三角)

杨辉三角

2201_76115387的博客 1375

华为OD机试 - 素数之积 - 数学问题(Java 2025 A卷 100分)

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 2133

Redis--缓存雪崩及解决方案

本文的内容讲的是使用Redis做缓存的过程中,出现的缓存雪崩问题及解决方案。

CJPSR的博客 2903

通过Python实现物联网金橙子自动打标

对于自家公司使用金橙子打标卡时,为了与生产线或者PLC联动等,往往需要对金橙子打标卡进行二次开发,而在二次开发中不得不涉及到MarkEzd.dll这个文件,而这个dll文件网上版本多不说,一般都没法直接使用,最后还不得不花大价钱购买专用库。而本文针对这个问题,涉法通过python来绕过MarkEzd.dll文件,直接进行自动化控制EzCad来实现联动,可应用于实际生产。文章最后拓展一下以物联网的形式,实现手机平台等登录网页,输入想要的印字内容后,远程打印的案例。

lylelo的博客 3365

Redis雪崩效应的解决方案(转)

1、可以使用分布式锁 单机版的话本地锁 当突然有大量请求到数据库服务器时候,进行请求限制。使用所的机制,保证只有一个线程(请求)操作。否则进行排队等待(集群分布式锁,单机本地锁)。减少服务器吞吐量,效率低。 保证只能有一个线程进入 实际上只能有一个请求在执行查询操作 也可以在此处进行使用限流的策略~ 2、缓存标记 public object GetProductListNew() ...

仲夏先森的博客 919

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

面试官:了解雪崩效应吗?了解Hystrix吗?怎么解决雪崩效应吗?(大型社死现场,教你运筹帷幄之中)

上篇我们模拟了高并发场景下,系统资源被耗尽导致其他接口访问非常之慢。至此,这篇给出了五种解决方案(当然这个是次要的,主要还是理解原理) 上篇地址:https://blog.youkuaiyun.com/Kevinnsm/article/details/117302197?spm=1001.2014.3001.5501 文章目录一、雪崩效应是什么?二、什么是Hystrix?三、Hystrix用来解决什么问题?四、雪崩效应的五大解决方案1、请求缓存Ⅰ、redis安装Ⅱ、代码配置Ⅲ、启动测试接口Ⅳ、模拟2500访问量高并.

Kevinnsm的博客 288

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Redis知识点

AOF和RDB AOF(Append Only File): 将每次写命令记录到单独的日志文件中(类似Mysql的binlog),Redis重启执行AOF文件中的命令恢复数据 RDB(默认): 是将进程数据写入文件中 开启AOF: 在配置文件中配置 appendonly yes Redis优点 读写性能优异 支持数据持久化, 支持AOF和RDB两种持久化方式 支持主从复制, 主机会自动...

qq_42451640的博客 276

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

使用redis分布式锁解决秒杀和高并发问题

(一)redis技术的使用: redis真的是一个很好的技术,它可以很好的在一定程度上解决网站一瞬间的并发量,例如商品抢购秒杀等活动。。。 redis之所以能解决高并发的原因是它可以直接访问内存,而以往我们用的是数据库(硬盘),提高了访问效率,解决了数据库服务器压力。 为什么redis的地位越来越高,我们为何不选择memcache,这是因为memcache只能存储字符串,而redis存储类型很...

qq_31207917的博客 924

redis在项目中遇到的问题:

1).缓存穿透的问题: 一般出现这样的问题,是因为当我们查询一条肯定不存在的数据的时候,缓存中没有,就会透过缓存来查询数据库,数据库也不存在,这样就会将值保存在缓存中最后还是缓存和数据库中都没有,如果一直访问这条数据。我们就对数据库进行频繁的查询给数据库带来压力 解决办法:当查询的时候,如果缓存和数据库中都没有,我们就将这个数据以空的形式存放在缓存中,(或者是给一个false的标示)这样就不用...

qq_39081437的博客 1099

redis 查看key的有效期_Redis

转自:Redis常见面试题 - 問天 - 博客园​www.cnblogs.com介绍:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统...

weixin_29372549的博客 3410

redis key热点以及解决方案

目录   一、热点Key问题产生的原因 1 高频读写:点赞  2单个server极限 二、热点Key问题的危害 击穿  雪崩 三、解决方案 1、服务端缓存方案 Ehcache:   FIFO     LRU    LFU 2、使用 Memcache、Redis 方案 3、使用本地缓存方案 4、读写分离方案解决热读 5、热点数据解决方案 四、热点 key 处理 1、热点数...

lucky的专栏 635

Redis设计与实现

转载收藏一下这篇文章 Redis缓存设计  设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效.   1) 缓存击穿:对于一些设置了过期时间的key, 刚好过期的时候,这时候有个高并发的请求,会导致直接访问数据库,危险.(批量放入时这么用的)先把缓存更新,再更新数据库。单个的时候先更新数据库,再更新缓存  2) 缓存穿透:查询一个一定不存在的数据,导致直接访问

心有猛虎,细嗅蔷薇! 1639

Day94 Redis

3.allkeys-lfu:和lru是有区别的、这个在淘汰的时候、淘汰的是全体key的集合、不是过期的key的集合(过期这一说法没有)、这就意味着你没有设置过期时间的key 只要使用的比较少那么依然会被淘汰。1.noeviction:只要缓存满了、那么就不继续服务器里面的写的请求、读的请求是可以完成的、这种模式缓存里面的所有数据 都不会丢失、这种情况会导致参与Redis的业务会失败(记住默认的)

weixin_69595694的博客 813

Redis面试题

什么是应用服务雪崩 雪崩问题 分布式系统都存在这样一个问题,由于网络的不稳定性,决定了任何一个服务的可用性都不是 100% 的。当网络不稳定的时候,作为服务的提供者,自身可能会被拖死,导致服务调用者阻塞,最终可能引发雪崩连锁效应。 缓存雪崩 当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力,造成数据库后端故障,从而引起应用服务器雪崩。 雪...

李玉坤的博客 1376

Redis入门

Redis缓存中间件 一、什么是Redis? 高性能的内存Key-Value数据库。 二、应用场景? 1、数据缓存 2、会话共享 3、秒杀场景 4、抢红包场景 5、预约排号 6、消息队列 7、分布式锁场景 8、分布式事务场景 9、分布式唯一ID生成 10、附近的人场景 三、Redis的安装 第一步:官网下载安装包 官网地址:https://redis.io/ 第二步:上传安装包到linux系统 第三步:解压安装包 tar -zxvf redis-6.0.8.tar.gz 第四步:编译Redis源文件 ma

weixin_40901926的博客 452

Redis

1、什么是Redis? Redis 是完全开源免费的, 遵守 BSD 协议, 是一个高性能的 key-value 数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis 不仅仅支持简单的 key-value 类型的数据, 同时还提供 list, set, zset, hash 等数据结构的存储。 Redis 支持数据的备份, 即 master-slave 模式的数据备份

CentOS 272
上一篇: 数据库垂直拆分 水平拆分
下一篇: Spring Boot2.0+Redis+Ehcache实现二级缓存
八点二十四分
博客等级 码龄10年 29粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值