当前位置: 首页 > news >正文

Redis使用场景-缓存-缓存雪崩

前言

之前在针对实习面试的博文中讲到Redis在实际开发中的生产问题,其中缓存穿透、击穿、雪崩在面试中问的最频繁,本文加了图解,希望帮助你更直观的了解缓存雪崩😀
(放出之前写的针对实习面试的关于Redis生产问题的博文链接)
Redis生产问题(缓存穿透、击穿、雪崩)——针对实习面试

什么是缓存雪崩?

缓存雪崩是指:在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。这种场景就像雪崩一样,所以叫缓存雪崩

在这里插入图片描述

缓存雪崩可能由以下几个原因引起:

  1. 缓存数据集中过期:如果缓存数据的过期时间设置不合理,比如很多缓存数据设置为在同一时间过期,那么在过期时刻,缓存将无法提供数据,导致请求直接落到数据库上。

  2. 缓存服务不可用:如果缓存服务由于某些原因(如宕机、网络问题等)变得不可用,那么所有的请求都会直接访问数据库。

  3. 数据库压力过大:当大量的请求直接访问数据库时,如果数据库没有足够的能力处理这些请求,可能会导致数据库响应缓慢甚至崩溃。

怎么解决缓存雪崩

解决缓存雪崩的最常用措施包括:

1. 过期时间随机化

为了避免大量缓存数据在同一时间过期,可以给缓存数据的过期时间加上一个随机值。这样,即使有大量数据需要设置为过期,它们也不会在同一时刻全部失效,从而减少了对数据库的瞬间压力。

图表:

+----------------+         +--------+         +------------+
|                |  过期   |        |  请求    |            |
|  用户请求数据   +-------->+  缓存   +-------->+  数据库     |
|                |         |        |         |            |
+----------------+         +--------+         +------------+

在缓存设置中加入随机过期时间,可以避免大量缓存数据在同一时间过期,从而减少数据库的压力 。

2. 搭建Redis高可用集群

通过搭建Redis高可用集群,可以有效地防止缓存雪崩问题的发生。如果主节点发生故障,从节点可以接管服务,继续提供缓存服务,避免了由于单点故障导致的缓存雪崩问题。

图表:

+--------+         +--------+
|        |         |        |
|  Redis  +------->+  Redis |
|  Master|         | Slave  |
|        |         |        |
+--------+         +--------+

通过Redis的主从复制、双主、读写分离等策略,提高数据库的容灾能力 。

3. 限流和降级策略

在缓存雪崩时,可以采取限流、降级等策略,减缓数据库的压力。例如,在缓存失效后,通过加锁或者使用队列来控制读数据库写缓存的线程数量。具体点就是设置某些Key只允许一个线程查询数据和写缓存,其他线程等待。则能够有效的缓解大并发流量对数据库打来的巨大冲击 。

4. 数据预热

在系统上线前,提前将热点数据加载到缓存中,避免大量请求同时触发缓存未命中的情况 。

如何实现:

  • 使用定时任务,比如 xxl-job,来定时触发缓存预热的逻辑,将数据库中的热点数据查询出来并存入缓存中。
  • 使用消息队列,比如 Kafka,来异步地进行缓存预热,将数据库中的热点数据的主键或者 ID 发送到消息队列中,然后由缓存服务消费消息队列中的数据,根据主键或者 ID 查询数据库并更新缓存

5. 多级缓存架构

使用本地缓存(如 Caffeine、Guava 等)和分布式缓存(如 Redis)相结合的方式,部分热点数据可以先放入本地缓存,降低 Redis 和数据库的压力 。

6. Redis 高可用

部署 Redis 主从集群,使用 Redis 的哨兵模式(Sentinel)或者 Redis Cluster 来实现高可用,避免缓存服务器单点故障 。

相关文章:

Redis使用场景-缓存-缓存雪崩

前言 之前在针对实习面试的博文中讲到Redis在实际开发中的生产问题,其中缓存穿透、击穿、雪崩在面试中问的最频繁,本文加了图解,希望帮助你更直观的了解缓存雪崩😀 (放出之前写的针对实习面试的关于Redis生产问题的博…...

概率论相关知识随记

作为基础知识的补充,随学随记,方便以后查阅。 概率论相关知识随记 期望(Expectation)期望的定义离散型随机变量的期望示例:掷骰子的期望 连续型随机变量的期望示例:均匀分布的期望 期望的性质线性性质期望的…...

【PlantUML系列】序列图(二)

目录 一、参与者 二、消息交互顺序 三、其他技巧 3.1 改变参与者的顺序 3.2 使用 as 重命名参与者 3.3 注释 3.4 页眉和页脚 一、参与者 使用 participant、actor、boundary、control、entity 和 database 等关键字来定义不同类型的参与者。例如: Actor&…...

WPF+MVVM案例实战与特效(三十四)- 日志管理:使用 log4net 实现高效日志记录

文章目录 1、概述2、日志案例实现1、LogHelper 类详解2、代码解释3、配置文件4、实际应用案例场景 1:记录系统运行日志场景 2:记录数据库操作日志场景 3:记录 HTTP 请求日志5、总结1、概述 在WPF软件开发中,良好的日志记录机制对于系统的调试、维护和性能优化至关重要。lo…...

前端测试框架 jasmine 的使用

最近的项目在使用AngulaJs,对JS代码的测试问题就摆在了面前。通过对比我们选择了 Karma jasmine ,使用 Jasmine做单元测试 ,Karma 自动化完成,当然了如果使用 Karma jasmine 前提是必须安装 Nodejs。 安装好 Nodejs ,使用 npm 安装好必要…...

Qwen2-VL视觉大模型微调实战:LaTex公式OCR识别任务(完整代码)

《SwanLab机器学习实战教程》是一个主打「开箱即用」的AI训练系列教程,我们致力于提供完善的数据集、源代码、实验记录以及环境安装方式,手把手帮助你跑起训练,解决问题。 Qwen2-VL是通义千问团队最近开源的大语言模型,由阿里云通…...

「Mac玩转仓颉内测版42」小学奥数篇5 - 圆和矩形的面积计算

本篇将通过 Python 和 Cangjie 双语解决简单的几何问题:计算圆的面积和矩形的面积。通过这道题,学生将掌握如何使用公式解决几何问题,并学会用编程实现数学公式。 关键词 小学奥数Python Cangjie几何计算 一、题目描述 编写一个程序&#…...

Groom Blender to UE5

Groom Blender to UE5 - Character & Animation - Epic Developer Community Forums Hello, 你好, While exporting my “groom” from blender to UE5, I notice that the curves have a minimal resolution in Unreal. However I would like to get the same …...

开发一套ERP 第十弹 图片作为配置文件,本地读取图片,定时更新图片类型

echo Hello World在同一数据库中在建一个图床数据表,产品一,一对应,图片命名 最优的方案,使用 rust 在构建一个 http server 用于管理非数据库资源,也可以将来对接不同的图床,部署方便 考虑到数据库资源和图片资源,都可以被远程访问这种方法最佳...

第七十六条:努力保持故障的原子性

当对象抛出异常之后,通常我们期望这个对象仍然保持在一种定义良好的可用状态之中,即使失败是发生在执行某个操作的过程中间。对于受检的异常而言,这尤为重要,因为调用者期望能从这种异常中进行恢复。一般而言,失败的方…...

Word分栏后出现空白页解决方法

Word分栏后出现空白页解决方法 只需要在后面的空白页设置相同的页面布局(分栏格式),然后按Ctrl backspace即可删除该空白页。 参考文章:Word分栏出现空白怎么解决。...

基于HTML和CSS的校园网页设计与实现

摘要 随着计算机、互联网与通信技术的进步,Internet在人们的学习、工作和生活中的地位也变得越来越高,校园网站已经成为学校与学生,学生与学生之间交流沟通的重要平台,对同学了解学校内发生的各种事情起到了重要的作用。学校网站…...

【算法day7】字符串:反转与替换

题目引用 反转字符串反转字符串II替换数字 1.反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1&am…...

分布式存储厂商

分布式存储 以下是对分布式存储厂商XSKY星辰天合、IOMesh(SmartX)、SmartX的深度对比: 1. XSKY星辰天合 产品与服务:XSKY星辰天合提供统一存储平台,支持块、文件和对象存储服务。已为近2400家大型政企机构实施部署&…...

合合信息扫描全能王线下体验活动:科技与人文的完美交融

文章目录 前言签到欢迎仪式产品体验智能高清滤镜去除透字效果照片高清修复 破冰行动会议感受 前言 作为合合信息旗下扫描全能王的忠实粉丝,上周,我很荣幸参与了扫描全能王“扫出你的能量buff”快闪活动及技术交流会。这次活动的不仅让我对这款强大的文档…...

单链表在Go语言中的实现与操作

简介 单链表是一种基本的线性数据结构,由节点组成,每个节点存储数据和指向下一个节点的指针。今天,我们将深入探讨如何在Go语言中实现和操作单链表。 单链表的优缺点 优点: 动态内存分配,灵活性高。插入和删除节点操…...

网关整合sentinel无法读取nacos配置问题分析

sentinel无法读取nacos配置问题分析 1.spring-cloud-gateway整合sentinel2.问题现象3.原因猜测4.源码分析4. 结语 最近公司需要上线一个集约项目,虽然为内网项目,但曾经有过内网被攻破,导致内部系统被攻击的案例,且集约系统同时在…...

简化XPath表达式的方法与实践

XPath表达式用于在XML或HTML文档中定位元素。有时候,XPath表达式可能会变得非常冗长和复杂,这不仅难以阅读和维护,而且也可能影响性能。因此,学会如何简化XPath表达式是非常重要的。本文将介绍几种简化XPath表达式的方法&#xff…...

【文件下载】接口传递文件成功和失败时,前端的处理方式

问题 使用bold类型从后端接口获取文件流,获取成功的时候通过a标签下载;失败的时候,后端返回的是json,这个时候就无法向用户展示后端返回的错误提示信息。 思路 根据返回类型是否为 application/json 区分是否返回成功&#xff…...

html+css网页设计马林旅行社移动端4个页面

htmlcss网页设计马林旅行社移动端4个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#…...

OpenClaw+千问3.5-9B二次开发:修改开源技能适配个人工作流

OpenClaw千问3.5-9B二次开发:修改开源技能适配个人工作流 1. 为什么需要二次开发开源技能? 去年我开始使用OpenClaw管理日常工作流时,发现一个有趣的现象:官方技能市场里的工具虽然丰富,但总有些"差点意思"…...

React 19 新特性吐槽:别再整那些花里胡哨的玩意儿了!

React 19 新特性吐槽:别再整那些花里胡哨的玩意儿了! 毒舌时刻 React 19 又双叒叕更新了,一堆新特性看得人眼花缭乱。我就想问一句:这些特性真的是开发者需要的吗?还是 React 团队为了刷存在感整的花架子? …...

Matlab Simulink四分之一主动悬架:PID与模糊PID控制器在车身加速度上的对比研究

项目:Matlab Simulink四分之一主动悬架,针对车身加速度的PID和模糊Pid控制器对比 详情:根据汽车的半主动悬架系统,通过Simulink建立二自由度1/4车辆简化模型以及路面激励模型,以车身垂直加速度为控制对象,悬…...

氢能多能利用调度系统 -NSGA-II多目标优化,实现氢能-电能-交通多能耦合系统的24小时优化调度,包含电解制氢、可再生能源、储氢、掺氢燃气轮机、氢燃料电池和氢电动汽车等关键设备研究(Matlab)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

VEGA_SH1106嵌入式OLED驱动库:SH1106与XFP1116-07A适配指南

1. VEGA_SH1106库概述:面向XFP1116-07A型1.3英寸OLED显示模块的嵌入式驱动框架VEGA_SH1106是一个专为XFP1116-07A规格1.3英寸单色OLED显示屏设计的轻量级嵌入式驱动库。该库基于Adafruit SH1106图形库(Adafruit-GFX-Library)进行适配与裁剪&a…...

Python迭代器与生成器:从入门到精通的完全指南

本文将用最通俗易懂的方式讲解Python迭代器和生成器的核心概念,通过大量实例帮你彻底掌握这两个重要的Python特性。 1. 引言:为什么要学迭代器和生成器? 想象一下,你需要处理一个包含1000万条数据的文件,如果一次性把所有数据加载到内存,你的电脑可能就卡死了。这时,迭…...

国产SeekWave 双频WIFI6+BT5.4 VS6621SR80基于RK3588平台成功替换RTL8822模组 硬件兼容 速率可达600Mbps

RK3588是瑞芯微(Rockchip)推出的旗舰级SoC芯片,采用8nm工艺,集成‌四核Cortex-A76和四核Cortex-A55 CPU、ARM Mali-G610 MP4 GPU、6 TOPS NPU‌,支持8K视频编解码。‌‌1‌‌2‌CPU‌:八核ARM架构&#xff…...

YOLO26涨点改进| TPAMI 2026 |独家创新首发、Conv改进篇| 引入LPM 局部先验特征增强模块,更加聚焦于目标区域并抑制背景干扰,助力目标检测、图像分割、图像恢复、图像增强有效涨点

一、本文介绍 🔥本文给大家介绍使用 LPM 局部先验特征增强模块 改进YOLO26网络模型,通过构建重要性图对特征提取过程进行引导,使模型能够更加聚焦于目标区域并抑制背景干扰,从而提升特征表达质量和目标区分能力。其优势体现在能够有效增强关键区域信息、提升小目标和复杂…...

2025届最火的十大降重复率助手实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 维普AIGC检测系统,是面向学术机构以及科研人员所推出的专业工具,其作…...

AA-PEG-C12/C16/C18,乙酸聚乙二醇月桂/棕榈/硬脂酸酯,一类结合了乙酸、聚乙二醇和长链烷基的化合物

一.名称英文名称:AA-PEG-C12/C16/C18,Acetic Acid-PEG-C12/C16/C18中文名称:乙酸聚乙二醇月桂/棕榈/硬脂酸酯,乙酸-PEG-月桂/棕榈/硬脂酸酯分子量:1k,2k,3.4k,5k,10k&…...