SET hot:sku:1001:r1 '{}' EX 30
SET hot:sku:1001:r2 '{}' EX 35
INFO commandstats

大促开始后单个键 QPS 冲到 8 万,所在分片 CPU 100%,同分片其他键延迟涨到 40 毫秒。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:流量全压在同一个键上,而 Redis 处理命令是单线程的,这个分片被彻底吃满,加从库只是分摊连接,键本身还是落在同一个槽。

「热 key 本地缓存」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。同一份配置存在多处的,先确认改的是被加载的那一份。

新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

处理上按这个顺序:进程内加一层短 TTL 本地缓存 挡掉绝大部分读;该键复制成带后缀的多份副本 读时随机取一个;多个副本的过期时间互相错开 避免同时失效。

确认没问题再收工,分片 CPU 回落到 60% 以下,同分片其他键的延迟回到原来水平。

作者 9823189