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 的请求

大佬,点个赞再走呗!

相关推荐
VALENIAN瓦伦尼安教学设备1 小时前
ASHOOTER激光对中仪如何通过颜色确定调整是否合适
数据库·嵌入式硬件·算法
Wang's Blog1 小时前
AI Agent白手起家58: 项目可观测性——用 LangSmith 实现全链路追踪
数据库·人工智能
程序员良辰2 小时前
【TongWeb8】使用 Crontab 定时重启和检测 TongWeb 服务
java·中间件·tomcat
SL_staff2 小时前
JVS数字底座实践:如何复用企业文档能力快速构建知识类应用
java·数据库·程序员
qq_185198693 小时前
SpingBoot3入门学习-Web开发-三
java·数据库·学习
农村小镇哥3 小时前
C#读取CSV文件的方法
服务器·数据库·c#
IMPYLH3 小时前
HTML 的 <embed> 元素
前端·数据库·html
油丶酸萝卜别吃4 小时前
Redis 布隆过滤器快速实现
数据库·redis·缓存
深念Y4 小时前
stable-diffusion.cpp 的 FLUX.2 Klein 9B 分步
java·前端·数据库
whn19774 小时前
oracle 的ora-19633处理
数据库·oracle