1. 程式人生 > >使用redis-dump-load工具導入導出redis數據

使用redis-dump-load工具導入導出redis數據

redis 數據 導出 導入

需求環境

Redis-dump-load是基於python2.7,利用redis模塊編寫的一個導出/導入redis數據的一個python程序,因此,需求環境如下:

python 2.7

pip2.7

python.redis模塊


安裝程序

# pip-2.7 install redis
# cd /usr/local
# git clone https://github.com/p/redis-dump-load.git
# cd redis-dump-load
# ./redisdl.py --help

技術分享



導出數據

假設內網有redis:192.168.1.20:6379,現可利用redisdl.py程序導出該redis數據到本地的json文件:

# python redisdl.py -H 192.168.1.20 -p 6379 -d 0 -o /tmp/db0.json
# ll /tmp/db0.json
-rw-r--r--. 1 root root 411772591 Oct 17 09:15 /tmp/db0.json

技術分享

利用以上命令導出192.168.1.20:6379實例中的db0數據到本地/tmp/db0.json文件中,從info信息中可以看到db0一共有1758個key數據。

註:

執行導出數據命令時,若出現類似decode(encoding)的字符類編碼錯誤時,可將程序中‘decode(encoding)’改為如下:

decode(‘utf-8‘,‘ignore‘)

導入數據—redis單實例

準備一個空的redis單實例:192.168.204.128:6379,把之前導出的/tmp/db0.json文件數據導入。

# python redisdl.py -l -H 192.168.204.128 -p 6379 -d 0 /tmp/db0.json

技術分享

可以看到數據已導入,導入了1756個key,與上述看到1758個key相差了兩個,大部分的key數據已導入到新的redis實例中,缺失的2個key應該是在導出數據後源redis新增的key數據。

導入數據—redis_cluster

準備一個空的redis_cluster集群(192.168.1.20:8001/8002/8003),並部署corvus(redis-porxy:192.168.1.20:12345),可以利用corvus把之前到處/tmp/db0.json文件數據導入到集群中去。

集群信息:

# /path/to/redis/redis-trib.rbcheck 192.168.1.20:8001

技術分享

# redis-cli -h 192.168.1.20 -p 12345 info

技術分享

數據導入:

# python redisdl.py -l -H 192.168.1.20 -p 12345 -d 0 /tmp/db0.json

技術分享

分別查看8001、8002、8003三個單獨rediscluster實例,可以看到通過corvus導入的數據已經分攤到各redis實例中,分別為545、626、584個keys。總數據為1755(導入後一個key過期了)。

註:

redisdl.py導入數據時,會去檢查redis的版本,由於使用corvus時,檢查出的版本為corvus版本,比redis3.0+的版本低,故執行時會報錯,需手動更改redisdl.py腳本:

# vi redisdl.py
# version = [int(part) for part inself.info()[‘redis_version‘].split(‘.‘)]
version = 3


本文出自 “扮演上帝的小醜” 博客,請務必保留此出處http://icenycmh.blog.51cto.com/4077647/1978295

使用redis-dump-load工具導入導出redis數據