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

Redis中的某一热点数据缓存过期了,此时有大量请求访问怎么办

当Redis中的热点数据缓存过期时,大量请求同时涌入数据库,可能导致数据库压力骤增,甚至引发系统崩溃。这种情况称为缓存击穿。以下是应对策略:

互斥锁:

        思路:当缓存失效时,只允许一个请求去数据库加载数据,其他请求等待。

        实现:

                1. 请求发现缓存失效时,尝试获取一个分布式锁(如Redis的SETNX命令)。

                2. 获取锁的请求去数据库加载数据并更新缓存。

                3. 其他请求等待缓存更新完成后,直接从缓存读取数据。

        优点:有效防止大量请求击穿数据库。

        缺点:增加了锁的开销,可能造成请求延迟。

缓存预热:

        思路:在缓存过期前,提前异步加载数据到缓存中。

        实现:

                1. 在缓存即将过期时,启动一个后台任务去数据库加载数据并更新缓存。

                2. 请求始终从缓存中读取数据,不会直接访问数据库。

        优点:避免缓存失效时的高并发问题。

        缺点:需要额外的定时任务或监控机制。

二级缓存:

        思路:使用两级缓存(如本地缓存 + Redis缓存),当Redis缓存失效时,先从本地缓存读取数据。

        实现:

                1. 本地缓存设置较短的过期时间(如1分钟)。

                2. 当Redis缓存失效时,请求从本地缓存读取数据。

                3. 异步更新Redis缓存。

        优点:减少对Redis和数据库的压力。

        缺点:本地缓存可能导致数据不一致。

提前更新缓存:

        原理:在缓存过期之前,提前更新缓存。可以通过定时任务或者在业务逻辑中根据数据的访问频率和更新频率来判断是否需要提前更新缓存。

相关文章:

  • 简述mysql主从复制原理及工作过程,配置一主两从并验证
  • 封装红黑树实现map和set
  • 缺陷检测之图片标注工具--labme
  • 【python】You-Get
  • 使用京东AsyncTool实现异步编排
  • 4、IP查找工具-Angry IP Scanner
  • 用deepseek学大模型03-数学基础 概率论 条件概率 全概率公式 贝叶斯定理
  • 周雨彤:用角色与生活,诠释审美的艺术
  • 1、cadence从零开始让一个VCO起振——基本设置
  • MATLAB算法实战应用案例精讲-【数模应用】空间插值(附MATLAB、R语言和python代码实现)
  • JavaScript设计模式 -- 迭代器模式
  • 【信息学奥赛一本通 C++题解】1285:最大上升子序列和
  • 同花顺数据爬取并生成K线
  • 【SpringBoot苍穹外卖】debugDay0 打开前端页面
  • sed命令详细教程
  • 力扣-二叉树-513 找二叉树左下角的值
  • FFmpeg 全面知识大纲梳理
  • 【LLM】浙大: 大模型基础 第一版 第一章:语言模型基础
  • CMake configure_file
  • Mycat中间件
  • 辽宁辽阳火灾3名伤者无生命危险
  • 农行一季度净利润719亿元增2.2%,不良率微降至1.28%
  • 烟花、美食和购物优惠都安排上了,上海多区开启热闹模式
  • 15世纪以来中国文化如何向欧洲传播?《东学西传文献集成初编》发布
  • 总有黑眼圈是因为“虚”吗?怎么睡才能改善?
  • 商务部:一季度我国服务贸易较快增长,进出口总额同比增8.7%