Redis 大 key
1、bigkeys
Redis提供了 bigkeys 参数能够使 redis-cli 以遍历的方式分析 Redis 实例中的所有 Key ,并返回 Key 的整体统计信息与每个数据类型中 Top1 的大 Key
redis-cli -h r-***************.redis.rds.aliyuncs.com -a <password> --bigkeys redis-cli --bigkeys 查询结果反馈如下 # Scanning the entire keyspace to find biggest keys as well as # average sizes per key type. You can use -i 0.1 to sleep 0.1 sec # per 100 SCAN commands (not usually needed). [00.00%] Biggest string found so far 'k2222' with 4 bytes [00.00%] Biggest string found so far 'kkk' with 9 bytes -------- summary ------- Sampled 3 keys in the keyspace! Total key length in bytes is 10 (avg len 3.33) Biggest string found 'kkk' has 9 bytes 3 strings with 18 bytes (100.00% of keys, avg size 6.00) 0 lists with 0 items (00.00% of keys, avg size 0.00) 0 sets with 0 members (00.00% of keys, avg size 0.00) 0 hashs with 0 fields (00.00% of keys, avg size 0.00) 0 zsets with 0 members (00.00% of keys, avg size 0.00) 0 streams with 0 entries (00.00% of keys, avg size 0.00) [root@orcls ~]#
bigkeys 是以 scan 延迟计算的方式扫描所有 key,因此执行过程中不会阻塞 redis,但实例存在大量的 keys 时,命令执行的时间会很长,这种情况建议在 slave 上扫描
2、Rdbtools 工具包
使用 Rdbtools 工具包通过分析备份 rdb 文件,可以查看期间大 key 情况及过期时间情况,且不影响实例使用,缺点是没有实时性;输出 csv 文档列信息
--安装 rdb 工具包 (venv) [root@orcls demo]# pip install rdbtools python-lzf --导出所有 key 的信息 rdb -c memory /dump.rdb > memory.csv ----rdb -c memory 文件目录 > 输出文件名称 ---导出大 key 也可以 按照参数修改即可 rdb dump.rdb -c memory --bytes 10240 -f live_redis.csv ---rdb -c memory 文件目录 --bytes 大小 -f 输出文档名称
Rdbtools 常用参数:
-c FILE:指定rdb工具的分析动作,最常用的就是memory(内存报告),除此还有json(转json)、diff(差异比对)、justkeys(仅有key)、justkeyvals(仅有value)
-f FILE:输出结果保存到哪个文件
-n DBS:指定需要分析的数据库,可以指定多个库。如果未指定则分析所有数据库
-k KEYS:指定需要分析的key,支持正则表达式