it编程 > 数据库 > Redis

Redis 热 key 和大 key 问题小结

21人参与 2025-04-28 Redis

一、什么是 redis 热 key?

热 key(hot key)定义:

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

 热 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 识别方法:

大 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)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Redis预防缓存穿透的6种策略

04-28

redis中使用lua脚本的原理与基本使用详解

04-29

Redis中6种缓存更新策略详解

05-03

一文带你搞懂Redis Stream的6种消息处理模式

05-04

Redis实现分布式锁全解析之从原理到实践过程

05-05

Redis实现客户端缓存的4种方式

05-07

猜你喜欢

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

发表评论