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

redis穿透、击穿、雪崩

穿透

数据库、redis中没有这个数据

解决方法:

  1. redis缓存空对象
  2. 布隆过滤器
  3. 加锁:当有一个key在redis中没查到,就加个锁,去数据库里查出来,再解锁。

挡住无效请求,重复请求

当缓存未命中时,先抢互斥锁,

只有获取锁的线程可以查询数据库,

其他缓存未命中的线程等待或返回默认值

其他缓存未命中的再去抢锁

击穿

一个热门key过期或者一个没被缓存的数据访问量突然增大(数据库有,但没被缓存)

解决方法:

  1. 互斥锁(Mutex Lock)​:只允许一个线程去重建缓存,其他线程等待或返回旧值。
  2. 永不过期策略:缓存不设置过期时间,通过后台任务定期更新。
  3. 多级缓存​​:采用本地缓存 + Redis 的两级缓存架构。

雪崩

大量key同时过期

解决方法:

  1. 设置不同过期时间​​:避免大量 key 同时过期
  2. 多级缓存架构​​:构建本地缓存 + Redis + 数据库的多级缓存
  3. 热点数据永不过期:对关键数据不设置过期时间,通过后台更新
  4. 熔断降级机制​​:当数据库压力过大时,暂时拒绝部分请求
  5. 缓存预热​​:系统启动时提前加载热点数据
  6. 集群部署与分片​​:通过集群分散压力

redis怎么删除过期key/回收key

后台轮询,分段分批删除哪些过期key

请求的时候判断是否已经过期了

redis怎么淘汰key

内存空间不够了,就得淘汰了

默认情况下是不淘汰的,noeviction​​ (默认策略)达到内存限制时,新写入操作就只会报错

淘汰全体key

过期key淘汰

怎么缓存预热

提前将热点数据加载到缓存中的过程叫缓存预热

如何知道那些key是热点key?

  1. 用户行为分析​​:通过日志分析高频访问数据
  2. ​​业务指标​​:订单量、点击量高的商品/内容
  3. ​​实时监控​​:使用Redis监控命令识别热点Key

数据库与缓存数据不一致问题

http://www.xdnf.cn/news/1013077.html

相关文章:

  • 30-Oracle 23ai-回顾从前的Flashback设置
  • SQL进阶之旅 Day 30:SQL性能调优实战案例
  • [网络实验] Cisco Packet Tracer | 通信子网的拓扑设计
  • 网络传输中的大小端问题
  • 一阶低通滤波器完整推导笔记
  • 【Chipyard】修改Gemmini 中PE的数量
  • JDK版本如何丝滑切换
  • 42 C 语言随机数生成详解:rand/srand 使用技巧、随机数范围控制、真实场景应用
  • Unity Assembly的灵活用法总结
  • 一块开发板多少钱?如何花最少的钱入门?
  • 【大模型02---Megatron-LM】
  • Node.js特训专栏-基础篇:2. JavaScript核心知识在Node.js中的应用
  • Flink 系列之二十八- Flink SQL - 水位线和窗口
  • 【计算机组成原理 第5版】白、戴编著 第七章 总线系统 课后题总结
  • 为什么电流、电压相同,功率却不同
  • ETLCloud中数据脱敏规则的使用技巧
  • 【有源医疗器械检测的常见问题、整改方法、送检了解】
  • HALCON第六讲->测量和检测
  • leetcode0721. 账户合并-medium
  • 推荐一个 github加速器
  • 探索MCP Server Chart:AI赋能的统计图表自动生成工具
  • Docker|简单入门
  • SAP BTP连接SAP,云连接器
  • 安装 LibreOffice
  • LangGraph高级教程:构建规划执行型智能体
  • 高动态范围成像
  • TSC TTP-244 打印机TSPL PUTBMP指令图片打印失败
  • 树莓派5实现串口通信教程
  • odoo 维护模块维护团队实践指南
  • Windows 操作系统 - 打开任务管理器的不同方式