当前位置: 代码网 > it编程>数据库>Redis > Redis 热 key 和大 key 问题小结

Redis 热 key 和大 key 问题小结

2025年04月28日 Redis 我要评论
一、什么是 redis 热 key?热 key(hot key)定义:在单位时间内被**频繁访问(读/写)**的 key,导致其访问集中、压力过大。热 key 常见表现:qps 极高(某 key 每秒

一、什么是 redis 热 key?

热 key(hot key)定义:

在单位时间内被**频繁访问(读/写)**的 key,导致其访问集中、压力过大。

 热 key 常见表现:

  • qps 极高(某 key 每秒被访问几万次)
  • 某业务高频读写一个 key(如秒杀库存、排行榜 top1)
  • redis 实例 cpu 异常,却只服务一个 key

热 key 的风险:

问题说明
单点压力过大所有请求打到同一个 key 上
缓存击穿热 key 过期瞬间,大量请求落到 db
主从复制延迟热 key 改变频繁 → 主从同步数据猛增
节点不均衡(集群)redis cluster 中 key 分布不均匀

热 key 解决方案:

问题说明
单点压力过大所有请求打到同一个 key 上
缓存击穿热 key 过期瞬间,大量请求落到 db
主从复制延迟热 key 改变频繁 → 主从同步数据猛增
节点不均衡(集群)redis cluster 中 key 分布不均匀

二、什么是 redis 大 key?

大 key(big key)定义:

指的是 value 太大(例如一个 hash 内含几百万个 field,或一个 list 有 10 万项以上)或**字符串体积超大(如几 mb 图片)**的 key。

大 key 的风险:

问题说明
❗ 删除阻塞del 大 key 时会阻塞 redis 单线程
❗ 主从复制变慢 / 丢失主节点传送一个大 key → 复制延迟
❗ 造成 rdb / aof 暴涨dump 一次会卡死
❗ 影响单条命令性能操作大 key 会变慢,例如 hgetall

大 key 识别方法:

  • 使用 redis-cli --bigkeys 命令扫描实例

  • 使用 redis-rdb-tools 分析 rdb 文件

  • 通过慢查询日志 + 监控查看 hgetalllrangesmembers 的大 key

大 key 解决方案:

方案说明
✅ 拆分数据结构如一个大 hash 拆成多个小 hash(按 id)
✅ 控制最大 field 数/元素数控制单个结构体内成员 ≤ 10k
✅ 禁用危险命令比如关闭 keys, flushall, hgetall
✅ 延迟删除 / 慢删策略例如将大 key 分批 unlink 删除
✅ 限制最大 value 大小字符串不要超过几 kb,避免超过 mtu

unlink vs del 的区别:

命令说明
del立即删除(阻塞线程)
unlink异步删除,非阻塞 ✅

✅ redis 4.0+ 建议用 unlink 删除大 key!

总结对比表

类型触发方式风险解决方案核心
热 key高频访问同一个 keycpu 飙升、击穿、热点本地缓存、分片、限流、预热
大 keyvalue 结构太大慢查询、阻塞、同步问题拆分结构、异步删除、结构约束、unlink

到此这篇关于redis 热 key 和大 key 问题的文章就介绍到这了,更多相关redis 热 key 和大 key内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com