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

缓存过期时间之逻辑过期

1. 物理不过期(Physical Non-Expiration)
  • 定义:在Redis中不设置EXPIRE时间,缓存键永久存在(除非主动删除或内存淘汰)。
  • 目的:彻底规避因缓存自动过期导致的击穿(单热点失效)和雪崩(多键集中失效)。
  • 数据示例
    SET user:1001:profile "{\"name\":\"Alice\",\"last_update\":1690000000}"  # 不设置TTL
    
2. 逻辑过期(Logical Expiration)
  • 定义:在缓存值的元数据中嵌入过期时间戳,业务层自行判断数据新鲜度。

  • 实现方式

    {
      "data": "真实业务数据",
      "expire_time": 1690003600  // 逻辑过期时间戳
    }
    
  • 触发更新条件

    • 定时任务扫描:后台线程周期性检查逻辑过期时间,主动更新临近过期的数据。
    • 被动触发更新:当业务请求发现数据逻辑过期时,触发异步更新(需结合降级策略)。
3. 后台异步更新(Background Update)
  • 技术实现
    • 独立线程池:与主业务线程隔离,避免更新操作阻塞正常请求。
    • 双缓冲机制:更新时生成新缓存副本,原子替换旧数据,避免脏读。
  • 流程图
    业务请求 → 读取缓存 → 判断逻辑过期 → 否 → 返回数据
                                  ↓是
                              发起到消息队列 → 后台Worker消费 → 更新DB → 刷新缓存
    

二、逻辑过期解决缓存击穿的实践

1. 缓存击穿(Cache Breakdown)
  • 传统问题场景:热点Key突然失效,瞬时高并发请求穿透至数据库。
  • 本方案优势
    • 无物理失效:热点Key永不自动删除,直接避免击穿触发条件。
    • 逻辑更新异步化:即使业务认为数据过期,更新操作由后台线程异步处理,前端请求无需等待,降级返回稍旧数据或进入队列等待。

相关文章:

  • 蓝桥备赛(25)算法篇【差分】
  • word文件转换为Markdown格式
  • 关于极端场景下,数据库更新与 MQ 消息一致性保障方案的详细总结
  • Qt信号与槽高级特性与项目实战:原理剖析与工程化应用指南
  • 20250330 Pyflink with Paimon
  • rocky linux下载软件
  • [Python]代理批量检测延迟工具
  • ChatTTS:对话场景语音合成的开源新星
  • 《量子密码》
  • CSS3学习教程,从入门到精通,CSS3 图像属性知识点及案例代码(16)
  • 如何获取thinkphp的所有发行版本
  • 运行时智控:PanLang 开发者指南(一)运行时系统核心模块实现——PanLang 原型全栈设计方案与实验性探索5
  • 单链表中的递归算法
  • 编译原理——词法分析
  • GD32 ARM单片机开发规范检查清单 GD32嵌入式C代码检查清单
  • 《TypeScript 类的艺术:高效编码指南》
  • TransformersInternLM源码阅读
  • 括弧匹配检验(信息学奥赛一本通-1354)
  • Cherry Studio搭建本地知识库,结合DeepSeek实现RAG
  • AM32-MultiRotor-ESC项目固件编译和烧录方法介绍
  • 2025上海车展的三个关键词:辅助驾驶、性价比,AI生态
  • 2025厦门体育产业采风活动圆满举行
  • 游戏论|迟来的忍者与武士:从《刺客信条:影》论多元话语的争议
  • 中越海警2025年第一次北部湾联合巡逻圆满结束
  • 巴基斯坦最近“比较烦”:遣返阿富汗人或致地区局势更加动荡
  • 山西10岁男孩遭生母和继父殴打遇害,案件庭审延期