分析rdb文件的工具
安装
git clone https://github.com/sripathikrishnan/redis-rdb-tools.git
sudo pip install --upgrade pip
sudo pip install python-lzf
分析以n开头的key
rdb --command justkeyvals --key "n*" /home/kou/redis_tar/redis-3.0-annotated/src/dump.rdb[kou@python ~]$ od -c /home/kou/redis_tar/redis-3.0-annotated/src/dump.rdb
0000000 R E D I S 0 0 0 6 376 \0 \0 004 n a m
0000020 e 005 h o d g e 377 004 | 313 025 = G % 310
0000040
json格式解析并输出
[kou@python ~]$ rdb --command json /home/kou/redis_tar/redis-3.0-annotated/src/dump.rdb
[{
"name":"hodge"}]
指定数据库,类型,格式,key
rdb -c json --db 2 --type hash --key "a.*"
生成内存报告
[kou@python ~]$ rdb -c memory /home/kou/redis_tar/redis-3.0-annotated/src/dump.rdb
database,type,key,size_in_bytes,encoding,num_elements,len_largest_element,expiry
0,string,name,56,string,5,5,
查找单键使用的内存
redis-memory-for-key -s localhost -p 6379 -a mypassword person:1
RDB文件转换为Redis协议流protocol
rdb --c protocol
您可以将输出通过管道传输到netcat并重新导入数据的子集。例如,如果要将数据分片到两个Redis实例中,则可以使用–key标志选择数据的子集,然后将输出传递给正在运行的Redis实例以加载该数据。阅读Redis Mass Insert以获得更多信息。
当输出打印协议时,该–escape选项可与一起使用printable或utf8避免使用不可打印/控制字符。
比较RDB文件
> rdb --command diff /var/redis/6379/dump1.rdb | sort > dump1.txt
> rdb --command diff /var/redis/6379/dump2.rdb | sort > dump2.txt
然后,运行您喜欢的差异程序> kdiff3 dump1.txt dump2.txt
分析结果
[kou@python ~]$ rdb --command justkeyvals --key "n*" /home/kou/redis_tar/redis-3.0-annotated/src/dump.rdbname hodge