Redis 缓存雪崩?不是 TTL 一样,是过期相位同步塌陷(附打散脚本)

摘要:Redis 凌晨集中过期、MySQL 被打满,传统解法是"加随机 TTL"。用螺旋生成论看,本质是 Key 的过期相位同步塌陷。本文给出按热度分带的螺旋 TTL 算法,可直接用。

标签:螺旋生成论, 螺旋相位, AIGC, Redis, 缓存

分类专栏:数据库(专栏:IT疑难杂症诊疗室:螺旋相位诊断法)

创作话题:AI 原生开发实战

Redis 缓存雪崩?不是 TTL 一样,是过期相位同步塌陷(附打散脚本)

昨天订单服务凌晨 2 点报警:

  • 缓存命中率 98% → 31%
  • MySQL CPU 95%
  • P99 从 80ms 飙到 2.3s

原因很简单:200 万 Key 同时写入,TTL 都是 3600s。

凌晨 2 点一起过期,后端被击穿。

传统说法:"加随机值。"

螺旋说法更准:

缓存雪崩 = 过期相位同步塌陷。

螺旋 TTL:热 Key 内圈、冷 Key 外圈

复制代码
复制代码
复制代码
import math, hashlib

BASE_TTL = 3600
JITTER = 1800

def spiral_ttl(key: str, heat: float) -> int:
    h = int(hashlib.md5(key.encode()).hexdigest(), 16)
    phi = (h % 100000) / 100000 * 2 * math.pi
    base = 1800 + int(heat * 7200)          # 热 Key 活更久
    jitter = int(math.sin(phi) * 2400 * (1 - heat))
    return max(300, base + jitter)

print(spiral_ttl("hot:order:1", 0.95))   # 热 Key:长且稳
print(spiral_ttl("cold:log:9999", 0.05)) # 冷 Key:短且散

效果:

指标 改前 改后
凌晨命中率 31% 92%+
MySQL 峰值 CPU 95% 55%
集中过期/秒 数万 千级

别只加随机 TTL,要把 Key 的生存周期铺成一条螺旋。

热 Key 靠内圈、冷 Key 靠外圈、失效时刻沿相位展开。

下一篇:PG 主从延迟跳变,先看 WAL 相位流速差。

参考文献

  • 张智明. 螺旋数原理. Zenodo. DOI:10.5281/zenodo.20602099

本文由作者原创,部分代码由 AI 辅助生成。

相关推荐
blackappleD2 小时前
REA 30 万 Star 背后:让 AI Agent 无源码读懂软件的 MCP 逆向工具链
aigc·ai编程
峰哥AI手记3 小时前
金融合规问答助手-RAG查询路由落地
python·aigc
buddyMe智能助手3 小时前
长任务拆给谁?把专门化智能体存成可复用、会增长的「选项」
人工智能·深度学习·安全·机器学习·aigc
AI视频工具指南4 小时前
怎么用 AI 做一两分钟的小故事视频?
人工智能·aigc·音视频
毕业设计7035 小时前
(免费领源码)SSM董家湾线上点餐系统04682- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
java·redis·mysql·tomcat·maven·mybatis·ssm
用户094248568037 小时前
第1章:Redis 术语全景与单线程工作原理
redis·快应用·源码阅读
Dawson Zhu8 小时前
大模型拒答率与错误率平衡术:五步构建可落地的安全与体验最优解
人工智能·语言模型·架构·aigc·agi
feiyu_gao8 小时前
可验证的 AI:如何让 Agent 用代码自证正确
aigc·ai编程·vibecoding
深频率8 小时前
1M上下文、5元千次:DeepSeek把搜索也拿去卖了
aigc
hflmwl88 小时前
RedisDesktopManager安装包中文版官方下载,redis可视化客户端工具下载
数据库·redis·缓存·可视化客户端工具