前言

redis 是单线程运行,如果 key 过大,会对整个 redis 相应时间对造成影响。

查找大 key

1、通过 rdb 文件分析,在 github 上有一个分析 rdb 文件的开源软件 rdr,Go 语言写的,通过这个离线分析可以减少对生产环境造成影响。(推荐)

2、redis-cli 原生自带的–bigkeys 的查找大 key 的分析,可以找到某个实例 5 种数据类型(String、hash、list、set、zset)的最大 key。

3、redis-cli 命令有一个 debug object 的命令,可以获取 key 在内存中序列化后的大小,可以通过 scan 方法查找 key,然后 debug object 分析 key。不推荐这个,如果 key 很多,要统计很久。

rdr 分析

https://github.com/xueqiu/rdr

作者没有发布二进制文件,需要安装一个 Go 的编译器。

go install   https://github.com/xueqiu/rdr

编译完就 rdr 一个文件可以直接运行

./rdr
NAME:
   rdr - a tool to parse redis rdbfile

USAGE:
   rdr [global options] command [command options] [arguments...]

VERSION:
   v0.0.1

COMMANDS:
     dump     dump statistical information of rdbfile to STDOUT
     show     show statistical information of rdbfile by webpage
     keys     get all keys from rdbfile
     help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help
   --version, -v  print the version

例子

将 rdb 文件拷贝当前目录,直接运行 rdr 文件进行分析,分析完以后,会监听 8080 端口,通过浏览器就可以直接访问查看结果

./rdr show -p 8080 *.rdb