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

大佬,点个赞再走呗!

相关推荐
youhebuke22540 分钟前
sqlalchemy CreateIndex
数据库·oracle·sqlalchemy
码农君莫笑1 小时前
C#实现文件读写到SQLite数据库的方法
数据库·sql·microsoft·sqlite·c#
Gauss松鼠会1 小时前
GaussDB SQL调优之改写SQL消除子查询
数据库·sql·gaussdb
鸿永与1 小时前
『SQLite』如何使用索引来查询数据?
数据库·sqlite
vvw&1 小时前
如何在 Ubuntu 22.04 上安装和配置邮件服务器教程
linux·运维·服务器·数据库·mysql·ubuntu·邮件服务器
鸿永与1 小时前
『SQLite』索引
数据库·sqlite
栗筝i2 小时前
Spring 核心技术解析【纯干货版】- V:Spring 基础模块 Spring-Context 模块精讲
java·数据库·spring
熟透的蜗牛3 小时前
大数据技术(九)—— HBase优化
大数据·数据库·hbase
代码欢乐豆3 小时前
HBase Cassandra的部署和操作
大数据·数据库·hbase
cooldream20094 小时前
数据库模型全解析:从文档存储到搜索引擎
数据库·人工智能·搜索引擎·知识图谱