当前位置:网站首页>Redis 排查大 key 的3种方法,优化必备
Redis 排查大 key 的3种方法,优化必备
2022-07-04 20:46:00 【Young丶】
在日常Redis的使用中,难免遇到因为 key 存储了过大的数据而造成请求缓慢甚至阻塞的情况,这个时候就需要排查 Redis 的大key去优化业务了,下面提供一些排查方案总结,仅供参考。
一、多大的 key 算大呢?
Redis 实践总结(仅供参考):
合理的 Key 中 Value 的字节大小,推荐小于 10 KB。
过大的 Value 会引发数据倾斜、热点Key、实例流量或 CPU 性能被占满等问题,应从设计源头上避免此类问题带来的性能影响。
那么 value Bytes > 10 kb 可以作为判断 大 key 的一个参考值。
二、排查大 key 的方法
1、使用命令 --bigkeys
--bigkeys
是 redis 自带的命令,对整个 Key 进行扫描,统计 string,list,set,zset,hash 这几个常见数据类型中每种类型里的最大的 key。
string 类型统计的是 value 的字节数;另外 4 种复杂结构的类型统计的是元素个数,不能直观的看出 value 占用字节数,所以 --bigkeys 对分析 string 类型的大 key 是有用的,而复杂结构的类型还需要一些第三方工具。
注:元素个数少,不一定 value 不大;元素个数多,也不一定 value 就大
redis-cli -h 127.0.0.1 -p 6379 -a "password" --bigkeys
--bigkeys
是以 scan 延迟计算的方式扫描所有 key,因此执行过程中不会阻塞 redis,但实例存在大量的 keys 时,命令执行的时间会很长,这种情况建议在 slave 上扫描。
–-bigkeys
其实就是找出类型中最大的 key,最大的 key 不一定是大 key,最大的 key 都不超过 10kb 的话,说明不存在大 key。
但某种类型如果存在较多的大key (>10kb),只会统计 top1 的那个 key,如果要统计所有大于 10kb 的 key,需要用第三方工具扫描 rdb 持久化文件。
2、使用 memory 命令查看 key 的大小(仅支持 Redis 4.0 以后的版本)
redis-cli -h 127.0.0.1 -p 6379 -a password
MEMORY USAGE keyname1
(integer) 157481
MEMORY USAGE keyname2
(integer) 312583
3、使用 Rdbtools 工具包
Rdbtools 是 python写的 一个第三方开源工具,用来解析 Redis 快照文件。除了解析 rdb 文件,还提供了统计单个 key 大小的工具。
1、安装
git clone https://github.com/sripathikrishnan/redis-rdb-tools
cd redis-rdb-tools sudo && python setup.py install
2、使用
从 dump.rdb
快照文件统计, 将所有 > 10kb 的 key 输出到一个 csv 文件
rdb dump.rdb -c memory --bytes 10240 -f live_redis.csv
边栏推荐
- 应用实践 | 蜀海供应链基于 Apache Doris 的数据中台建设
- Jerry's ad series MIDI function description [chapter]
- __ init__ () missing 2 required positive arguments
- 创客思维在高等教育中的启迪作用
- Use of class methods and class variables
- Flutter WebView示例
- 杰理之AD 系列 MIDI 功能说明【篇】
- Jerry's ad series MIDI function description [chapter]
- Jerry's ad series MIDI function description [chapter]
- How was MP3 born?
猜你喜欢
如何借助自动化工具落地DevOps
admas零件名重复
Detailed explanation of multi-mode input event distribution mechanism
华为ensp模拟器 实现多个路由器的设备可以相互访问
超详细教程,一文入门Istio架构原理及实战应用
Daily question-leetcode556-next larger element iii-string-double pointer-next_ permutation
FastDfs的快速入门,三分钟带你上传下载文件到云服务器
华为ensp模拟器 三层交换机
华为ensp模拟器 给路由器配置DHCP
B站视频 声音很小——解决办法
随机推荐
Delphi soap WebService server-side multiple soapdatamodules implement the same interface method, interface inheritance
巅峰不止,继续奋斗!城链科技数字峰会于重庆隆重举行
Jerry's ad series MIDI function description [chapter]
OMS系统实战的三两事
IIC (STM32)
Flutter在 release版本,打开后随机白屏不显示内容
如何使用ConcurrentLinkedQueue做一个缓存队列
Huawei simulator ENSP common commands
redis发布订阅的使用
数十亿公民信息遭泄漏!公有云上的数据安全还有“救”吗?
Huawei ENSP simulator realizes communication security (switch)
UTF encoding and character set in golang
Monitor the shuttle return button
Jerry's ad series MIDI function description [chapter]
Numpy vstack and column_ stack
Redis:Redis配置文件相关配置、Redis的持久化
Rotary transformer string judgment
Learning breakout 3 - about energy
Liu Jincheng won the 2022 China e-commerce industry innovation Figure Award
ArcGIS 10.2.2 | solution to the failure of ArcGIS license server to start