redis备份-rdb文件使用
文档
rdb格式: https://github.com/sripathikrishnan/redis-rdb-tools/wiki/Redis-RDB-Dump-File-Format
工具
rdbtools的安装
rdbtools有三个主要的功能
- 分析静态rdb文件并生成csv格式的内存报告
- 将rdb文件转储成为json格式
- 利用diff工具比较两个rdb文件的不同
通过python的pip安装:
./pip install rdbtools
./pip install python-lzf
分析
分析rdb文件当中top100的大key:
rdb -c memory dump-6120957-redis-server-ignore-140016731-ignore-1-ignore.rdb -l 100 -f ./dump_memory.csv
根据key前缀提取所有批评的key(等同于keys*命令):
rdb -c memory dump-6120957-redis-server-ignore-140016731-ignore-1-ignore.rdb -k "abc*" -f ./abc.csv
表头字段说明
type | key | size_in_bytes | encoding | num_elements | len_largest_element | expiry | |
---|---|---|---|---|---|---|---|
key所属db编号 | key的类型例如string list set等 | key名 | key大小(字节数) | 编码方式(hashtable,ziplist,string等) | key中元素的个数 | key中最大元素的长度 | 过期时间 |
rdb命令帮助:
usage: rdb [options] /path/to/dump.rdb
Example : rdb --command json -k "user.*" /var/redis/6379/dump.rdb
positional arguments:
-- 要处理的dump文件
dump_file RDB Dump file to process
optional arguments:
-- 帮助
-h, --help show this help message and exit
-- 要处理的命令,-c后的有效参数为:json, diff,justkeys, justkeyvals, memory,protocol
-c CMD, --command CMD
Command to execute. Valid commands are json, diff,
justkeys, justkeyvals, memory and protocol
-- 输出文件
-f FILE, --file FILE Output file
-- 数据库号,可以提供多个数据库。如果未指定,则包括所有数据库。
-n DBS, --db DBS Database Number. Multiple databases can be provided.
If not specified, all databases will be included.
-- 要导出的key。这可以是一个正则表达式
-k KEYS, --key KEYS Keys to export. This can be a regular expression
-- key不导出。这可以是一个正则表达式
-o NOT_KEYS, --not-key NOT_KEYS
Keys Not to export. This can be a regular expression
-- 解析的数据类型。可能的值为string,hash,set,sortedset,list。可以输入多种类型提供。如果未指定,则为所有数据类型
-t TYPES, --type TYPES
Data types to include. Possible values are string,
hash, set, sortedset, list. Multiple typees can be
provided. If not specified, all data types will be
returned
-- 将key的内存输出限制为大于或等此值(以字节为单位)
-b BYTES, --bytes BYTES
Limit memory output to keys greater to or equal to
this value (in bytes)
-- 将内存按大小输出前N个key
-l LARGEST, --largest LARGEST
Limit memory output to only the top N keys (by size)
-- 将字符串转义为编码:raw(默认),print,utf8或base64。
-e {raw,print,utf8,base64}, --escape {raw,print,utf8,base64}
Escape strings to encoding: raw (default), print,
utf8, or base64.
-- 使用command protocol参数,从所有键中删除到期的key
-x, --no-expire With protocol command, remove expiry from all keys
-- 使用command protocol参数,将N秒添加到key的到期时间
-a N, --amend-expire N
With protocol command, add N seconds to key expiry
time