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

大佬,点个赞再走呗!

相关推荐
1892280486131 分钟前
NY270NY273美光固态闪存NY277NY287
服务器·网络·数据库·科技·性能优化
星霜笔记4 小时前
Docker 部署 MariaDB+phpMyAdmin+Nextcloud 完整教程
运维·数据库·docker·容器·mariadb
wyiyiyi9 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
天宇_任10 小时前
Mysql数据库迁移到GaussDB注意事项
数据库·mysql·gaussdb
鼠鼠我捏,要死了捏11 小时前
生产环境Redis缓存穿透与雪崩防护性能优化实战指南
redis·cache
xiep143833351013 小时前
Ubuntu 安装带证书的 etcd 集群
数据库·etcd
Java小白程序员14 小时前
Spring Framework:Java 开发的基石与 Spring 生态的起点
java·数据库·spring
老虎062714 小时前
数据库基础—SQL语句总结及在开发时
数据库·sql·oracle
曾经的三心草15 小时前
微服务的编程测评系统11-jmeter-redis-竞赛列表
redis·jmeter·微服务
爱掘金的土拨鼠16 小时前
国产化dm数据库锁表解锁
数据库