Redis 大 Key 阻塞排查:一个 200MB 的 Hash 拖垮了整个集群
引言 周三下午 2 点,运营群反馈"用户行为分析看板打不开了"。运维查 Redis 监控:CPU 正常、内存正常、连接数正常,但命令延迟 P99 从 2ms 飙到 800ms——看起来一切正常却慢得离谱。接下来 10 分钟,越来越多的接口开始超时,告警从 3 条涨到 47 条,最终整个 Redis 集群不可用。 排查发现:一个名叫 user:behavior:all 的 Hash Key,存了全量用户行为日志,200MB。更致命的是,运维在试图 DEL 这个 Key 时,Redis 主线程被阻塞了 3 秒——3 秒内所有命令排队等待,集群雪崩。 根因出奇简单:业务把用户行为日志全塞进一个 Hash,没设过期时间,日积月累从 2KB 长到 200MB。Redis 是单线程的——一个慢命令阻塞主线程,整个实例都卡住。这篇文章从发现到修复完整复盘,附大 Key 扫描脚本和预防机制。 一、为什么一个大 Key 能拖垮整个集群 1.1 Redis 单线程模型 Redis 主线程(单线程处理所有命令) │ ├─ 命令1: GET user:1001 0.01ms ├─ 命令2: SET toke....