A efficient and safe parser in Golang. Its characteristics are: make full use of
the language's goroutine
, write at the same time as the file is written. This
important thing is that you can analyze without connecting to an online service.
_____ ____ ____ _____ ____ _ ____ ____ ____ ____ ____ _____ ____
/ __// _ \ / __\/ __// _ \/ \/ ___\ / __\/ _ \/ __\/ ___\/ __// __\
| | _| / \|_____ | \/|| \ | | \|| || \_____ | \/|| / \|| \/|| \| \ | \/|
| |_//| \_/|\____\| /| /_ | |_/|| |\___ |\____\| __/| |-||| /\___ || /_ | /
\____\\____/ \_/\_\\____\\____/\_/\____/ \_/ \_/ \|\_/\_\\____/\____\\_/\_\
go-redis-parser version: alpha 2019-08-24 15:24:34
Usage of:
-o string
set the output directory for gen-file. (default: current directory. parser.(json|csv) will be created)
-rdb string
<rdb-file-name>. For example: ./dump.rdb
-type string
set the gen-file's type, support type: json、csv. (default: csv)
(default "csv")
Supports Redis from 2.8 to 5.0, all data types except module. Including:
- String
- Hash
- List
- Set
- SortedSed
- Stream(Redis 5.0 new data type)
In addition to exporting all key/values, it also looks for all types of Bigkeys
(like redis-cli --bigkeys
).
go-redis-parser
will build a binary file
,you can use git
or go get
to install.
$ git clone https://github.com/8090Lambert/go-redis-parser.git && cd go-redis-parser
$ go install
$ go get github.com/8090Lambert/go-redis-parser
Before using, you should set export PATH=$PATH:$GOPATH/bin
$ go-redis-parser -rdb <dump.rdb> -o <gen-file folder> -type <gen-file type, json or csv, default csv>
DataType | Key | Value | Size(bytes) |
---|---|---|---|
AuxField | redis-ver | 5.0.5 | 0 |
AuxField | redis-bits | 5.0.5 | 0 |
AuxField | ctime | 5.0.5 | 0 |
AuxField | used-mem | 5.0.5 | 0 |
AuxField | aof-preamble | 5.0.5 | 0 |
SelectDB | select | 0 | 0 |
ResizeDB | resize db | {dbSize: 6, expireSize: 0} | 0 |
String | s | a | 1 |
List | li | a,b | 2 |
Set | set | b,a | 2 |
Stream | stream | {"Entries":{"1569553992318-0"... | 41 |
Sortedset | zset | [{"Field":"a","Score":1},{"Field":"b","Score":2}] | 2 |
Hash | h | [{"field":"a","value":"a"}] | 2 |
# Scanning the rdb file to find biggest keys
-------- summary -------
Sampled 6 keys in the keyspace!
Total key length in bytes is 17
Biggest string found 's' has 1 bytes
Biggest hash found 'h' has 1 fields
Biggest list found 'li' has 2 items
Biggest sortedset found 'zset' has 2 members
Biggest set found 'set' has 2 members
Biggest stream found 'stream' has 3 entries
1 string with 1 bytes
1 hash with 1 fields
1 list with 2 items
1 sortedset with 2 members
1 set with 2 members
1 stream with 3 entries