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 辅助生成。

相关推荐
Csvn2 小时前
前言与后记 · 全书完结
人工智能·aigc·agent
Csvn2 小时前
附录 C+D+E 参数速查表 · 术语表 · 中文模型 API 上手
人工智能·aigc·agent
Csvn2 小时前
第 29 章 完整开发流程与学习路线
人工智能·aigc·agent
小四的小六2 小时前
AI 代码需求实战:从“一句话需求“到“字段级 Spec“
aigc·openai·ai编程
Csvn2 小时前
附录 A+B 主流框架速查 & 工具与资源清单
人工智能·aigc·agent
夕除3 小时前
redis--020
redis
倔强的石头_4 小时前
10 个任务实测蓝耘智能路由:它把任务派给了谁,钱花对了吗
aigc
知了一笑4 小时前
企业的AI转型,真能找到出路吗?
人工智能·ai·aigc
Csvn9 小时前
第 28 章 案例四 多智能体协作系统
人工智能·aigc·agent