天天看點

使用redis-dump-load工具導入導出redis資料

需求環境

Redis-dump-load是基于python2.7,利用redis子產品編寫的一個導出/導入redis資料的一個python程式,是以,需求環境如下:

python 2.7

pip2.7

python.redis子產品

安裝程式

1

2

3

4

5

<code># pip-2.7 install redis</code>

<code># cd /usr/local</code>

<code># git clone https://github.com/p/redis-dump-load.git</code>

<code># cd redis-dump-load</code>

<code># ./redisdl.py --help</code>

<a href="https://s5.51cto.com/oss/201711/02/d3f26b3936ab666af9aa46a905c16eae.png" target="_blank"></a>

導出資料

     假設内網有redis:192.168.1.20:6379,現可利用redisdl.py程式導出該redis資料到本地的json檔案:

<code># python redisdl.py -H 192.168.1.20 -p 6379 -d 0 -o /tmp/db0.json</code>

<code># ll /tmp/db0.json</code>

<code>-rw-r--r--. 1 root root 411772591 Oct 17 09:15 </code><code>/tmp/db0</code><code>.json</code>

     利用以上指令導出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檔案資料導入。

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

     可以看到資料已導入,導入了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檔案資料導入到叢集中去。

叢集資訊:

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

<code># redis-cli -h 192.168.1.20 -p 12345 info</code>

    資料導入:

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

分别檢視8001、8002、8003三個單獨rediscluster執行個體,可以看到通過corvus導入的資料已經分攤到各redis執行個體中,分别為545、626、584個keys。總資料為1755(導入後一個key過期了)。

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

<code># vi redisdl.py</code>

<code># version = [int(part) for part inself.info()['redis_version'].split('.')]</code>

<code>version = 3</code>

<code></code>

本文轉自 icenycmh 51CTO部落格,原文連結:http://blog.51cto.com/icenycmh/1978295,如需轉載請自行聯系原作者