Redis的大key和热key问题

一、Redis 大 key 问题及解决方案
1、大 key 的标准是什么
String 类型:一个 value 的字节数大于 10KB 即为大 key
Hash/Set/Zset/list 等复杂数据结构类型:一个 key 中的元素个数大于 5000 即为大 key,超过后 SLA 会下降明显,不能提供很好的性能

2、大 key 可能会导致哪些问题
内存占用 :大 Key 占用大量内存,可能导致内存不足
网络传输 :大 Key 在网络传输时会占用较多带宽,影响网络性能
阻塞操作 :对大 Key 的操作(如 DEL、EXPIRE、SMEMBERS 等)可能会阻塞 Redis 服务器,影响其他请求的处理

3、大 key 如何发现

使用内置命令 :redis-cli --hotkeys, redis-cli --bigkeys

使用开源工具 :rdb_bigkeys:工具地址

4、大 key 如何治理
拆分 大 key:结合具体业务场景,将大 key 进一步拆分为小 key,例如一个 string 大 key 拆分成多个 string 重新写入,但拆分后数据更新需要业务侧控制
压缩 大 key:对大 key 进行压缩,可使用各语言提供的压缩方法进行压缩后重新写入,压缩方法需要用户自行调研选择,通常 gzip、snappy 等都可以
开启 Proxy Cache(若有): 如果是读请求,可以考虑开启 Proxy Cache 来减少打到 Server 的请求

二、Redis 热 key 问题及解决方案
1、热 key 的标准是什么

一般是单个 key 的访问达到 5000 QPS

2、热 key 可能导致哪些问题
性能瓶颈 :高频率的请求可能导致 Redis 服务器的 CPU 和网络资源耗尽,影响整体性能
单点故障 :如果热 Key 存储在单个 Redis 实例中,该实例可能成为单点故障点

3、热 key 如何发现

业务凭借经验

使用内置命令 :redis-cli --hotkeys,redis-cli --bigkeys

使用 MONITOR 命令 :MONITOR 命令可以实时监控所有的 Redis 命令,帮助你发现访问频率高的键。可以将 MONITOR 命令的输出重定向到一个文件,然后使用脚本分析哪些键被频繁访问

使用开源工具分析

4、热 key 如何治理

设置 Localcache :结合具体业务场景,在访问 Abase 前,在业务服务侧设置 Localcache,降低访问 Abase 的qps
拆分热 key :结合具体业务场景,将 key:value 这一个热 key 复制写入多份,例如 key1:value, key2:value,访问的时候访问多个 key,但 value 是同一个,以此将 qps 分散到不同实例上,降低负载
限流策略 :使用限流算法(如令牌桶算法)限制对 hot_key 的请求频率,例如每秒最多允许 1000 次请求
开启 Proxy Cache(若有): 如果是读请求,可以考虑开启 Proxy Cache 来减少打到 Server 的请求

大佬,点个赞再走呗!

相关推荐
键盘上的猫头鹰1 小时前
【MySQL 教程(八)】索引、事务、用户管理、导入导出与分页查询
数据库·python·mysql
Royzst1 小时前
数据库知识点
数据库
雪的季节1 小时前
企业级 Qt 全功能项目
开发语言·数据库·qt
宋浮檀s2 小时前
应急响应——Web漏洞:命令执行+SSRF+弱口令
运维·数据库·sql·网络安全·oracle·应急响应
yurenpai(27届找实习中)3 小时前
redis_点评(21.好友关注——关注、取关功能实现;共同关注功能实现)
数据库·redis·缓存
Rick19933 小时前
索引的排序和分组
数据库·mysql
爱莉希雅&&&3 小时前
zabbix快速搭建和使用
android·linux·数据库·zabbix·监控
JohnYan3 小时前
工作笔记 - PG分组极值
数据库·后端·postgresql
清溪5493 小时前
DataEase H2 JDBC-RCE(CVE-2025-32966)复现
数据库·安全
ServBay4 小时前
不要再盲选了,PostgreSQL、MySQL与SQLite真实性能对比
数据库·mysql·sqlite