go-Redis-parser(更高效的 Redis 解析工具,支援查詢大 key)

8090Lambert發表於2019-09-30

go-redis-parser.jpg

go-redis-parser,專案地址:https://github.com/8090Lambert/go-redis-pa... 一個簡單、安全的Redis 解析器。瞭解到目前存在的 parser,大部分都是單程式解析完成後,再統一輸出,拉長了整體的執行時間,決定自己重寫一個。它的特點是:離線即用,不必連線線上服務,並且利用 golang 語言本身的協程,實現邊解析邊寫檔案內容,非常高效

簡單介紹下這個工具:

Feature

支援Redis從2.8版本至5.0版本的,除了 module外的所有資料型別。包括:

  • String
  • Hash
  • List
  • Set
  • SortedSed
  • Stream(敲黑板,重點重點重點,重要的事情說三遍)

Other

匯出 server 所有 key/values,而且會找出現有各型別的 bigkey(類似redis-cli的 --bigkeys 引數輸出)

Installation

go-redis-parser 是可執行的二進位制檔案(binary file),可以使用 git 或者 go get 來下載安裝

via git

$ git clone https://github.com/8090Lambert/go-redis-parser.git && cd go-redis-parser
$ go install

via go

$ go get github.com/8090Lambert/go-redis-parser

Using

在使用之前,你需要先設定 export PATH=$PATH:$GOPATH/bin

$ go-redis-parser -rdb <dump.rdb> -o <gen-file folder> -type <gen-file type, json or csv, default csv>

Generate file

目前可匯出兩種型別的檔案:json、csv。這裡看下 csv 檔案的示例

BigKeys outputs

BigKeys的輸出示例:

# 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

8090lambert

相關文章