news 2026/7/3 1:46:02

Redis 热 Key 治理:发现热点只是第一步

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Redis 热 Key 治理:发现热点只是第一步

Redis 热 Key 治理:发现热点只是第一步

一、热 Key 会把集群打成单点

Redis 集群看起来是分布式的,但一个热 Key 会把压力集中到单个分片。热门商品、配置项、活动库存、排行榜和登录态都可能成为热点。热 Key 的问题不只是延迟升高,还可能导致某个节点 CPU 飙高、网络打满,进而影响同分片其他 key。

治理热 Key 不能只靠扩容。扩容能增加整体容量,但单个 key 仍然落在一个分片上。真正的治理要从发现、拆分、缓存策略和降级一起做。

二、治理链路:监控发现到业务拆分

flowchart TD A[Redis 指标异常] --> B[热 Key 发现] B --> C[业务归因] C --> D[本地缓存] C --> E[Key 拆分] C --> F[请求合并] F --> G[降级保护]

热 Key 发现可以用 Redis 自带命令、代理层统计、客户端埋点或云厂商工具。只知道某个 key 热还不够,要知道它来自哪个接口、哪个业务活动、读写比例和峰值时段。没有业务归因,就只能临时救火。

读热点和写热点治理不同。读热点可以考虑本地缓存、多级缓存、请求合并和副本读;写热点更麻烦,可能需要业务拆分、异步聚合或改变数据模型。把写热点当读热点处理,容易造成一致性问题。

三、代码示例:请求合并降低穿透

下面是一个简化思路:同一时刻同一个 key 只让一个请求回源。

public Product getProduct(String id) { String key = "product:" + id; Product cached = redis.get(key); if (cached != null) { return cached; } return singleFlight.doOnce(key, () -> { Product product = database.findProduct(id); redis.setex(key, 60, product); return product; }); }

请求合并能减少缓存失效瞬间的回源压力,但不能解决长期热读。长期热 Key 可以加本地缓存,TTL 设短一点,接受秒级延迟。核心是让每次请求不都打到同一个 Redis 分片。

Key 拆分适合计数和排行榜等场景。比如把一个全局计数拆成多个 shard key,写入时随机分片,读取时聚合。代价是读取更复杂,数据不再天然强一致。业务必须接受这种取舍。

四、降级策略:热点活动要提前预案

热点通常不是完全随机的。大促、直播、秒杀、新功能发布都会制造热点。活动前要压测热点 key,准备本地缓存、限流、降级页面和只读模式。等节点 CPU 打满后再查,已经晚了。

监控要按分片看。集群平均 CPU 30% 没意义,单分片 95% 才是事故信号。网络、慢命令、key 访问频率和连接数都要拆分到节点维度。

最后,治理后要复盘 key 设计。为什么这个 key 会热?是否可以按租户、区域、业务维度拆?是否可以把实时查询改成异步刷新?热 Key 是症状,数据模型才是根。

热 Key 治理也要注意一致性。加本地缓存后,更新传播会变慢;Key 拆分后,读取聚合可能出现短暂不一致。不要只看 Redis 压力下降,还要看业务是否能接受这些延迟。架构优化的每一步,都要把收益和代价写清楚。

五、总结

Redis 热 Key 治理要从发现走到业务归因,再选择本地缓存、请求合并、Key 拆分、限流和降级。扩容只能缓解整体压力,不能消除单 key 热点。热点治理的最终答案,通常在业务模型里。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 1:44:42

MetaTube插件:3分钟打造完美Jellyfin媒体库的终极元数据解决方案

MetaTube插件:3分钟打造完美Jellyfin媒体库的终极元数据解决方案 【免费下载链接】jellyfin-plugin-metatube MetaTube Plugin for Jellyfin/Emby 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-metatube 还在为Jellyfin媒体库中那些只有文件…

作者头像 李华
网站建设 2026/7/3 1:39:13

从零搭建Playwright+Python+VS Code自动化测试与数据采集环境

1. 项目概述:为什么选择PlaywrightPythonVS Code这个黄金组合?如果你正在寻找一个既能做Web自动化测试,又能做数据抓取,还能做UI交互模拟的“瑞士军刀”,那Playwright绝对是当前最值得投入时间学习的工具之一。它由微软…

作者头像 李华
网站建设 2026/7/3 1:38:13

Flink DataStream API vs Flink SQL:核心异同对比

一、编译链路对比二、多维度对比维度DataStream APIFlink SQL抽象层次命令式(HOW:告诉引擎怎么做)声明式(WHAT:告诉引擎做什么)优化空间用户手动优化逻辑优化器自动选择最优策略前端编译无(直接…

作者头像 李华
网站建设 2026/7/3 1:38:08

以主站为参考时钟实现主从DC同步方案及原理深度剖析(3):计算从站传输延时

2.计算从站传输延时 2.1 ESC端口组成 想要计算从站的传输延时,必须要先对从站ESC有所了解。 ESC具有四个数据收发端口,每个端口都可以收发以太网数据帧。数据帧在ESC内部的传输顺序是固定的,如下图所示。通常,数据从端口0进入ESC,然后按照端口3→端口1→端口2→端口0的…

作者头像 李华
网站建设 2026/7/3 1:31:38

OpenRGB终极指南:3步免费统一控制所有RGB设备灯光的完整教程

OpenRGB终极指南:3步免费统一控制所有RGB设备灯光的完整教程 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcProgrammer1/OpenRGB. …

作者头像 李华