linux redis导入数据,使用redis-dump-load工具导入导出redis数据

Redis-dump-load是基于python2.7,利用redis模块编写的一个导出/导入redis数据的一个python程序。

项目地址:https://github.com/p/redis-dump-load

需求环境

python 2.7(python 3.x),pip2.7(pip 3.x),redis模块

安装程序

Linux:

Shell

# pip install redis

# cd /usr/local

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

# cd redis-dump-load

# ./redisdl.py --help

1

2

3

4

5

# pip install redis

# cd /usr/local

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

# cd redis-dump-load

# ./redisdl.py --help

1531122517-1801-6b3936ab666af9aa46a905c16eae.png

Windows:

从项目地址中下载解压,然后进入目录用cmd命令安装依赖包

TeX

pip install -r requirements-dev.txt

1

pipinstall-rrequirements-dev.txt

2018-07-09_160214.png

注:导出、导入命令Linux/Windows 是通用的,修改json文件路径就可以了。

导出数据

假设内网有redis:192.168.1.20:6379,现可利用redisdl.py程序导出该redis数据到本地的json文件:

Shell

# 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

1

2

3

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

# ll /tmp/db0.json

-rw-r--r--.1rootroot411772591Oct1709:15/tmp/db0.json

1531123473-3213-be1993cb022e300cb0f36853a180.png

利用以上命令导出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文件数据导入。

Shell

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

1

pythonredisdl.py-l-H192.168.204.128-p6379-d0/tmp/db0.json

1531123473-3212-e0633fd35b29c9ab26cb92319c64.png

可以看到数据已导入,导入了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文件数据导入到集群中去。

集群信息:

Shell

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

1

/path/to/redis/redis-trib.rbcheck192.168.1.20:8001

1531123473-9397-92e1b0f812b84f8328ddb1ecf578.png

Shell

redis-cli -h 192.168.1.20 -p 12345 info

1

redis-cli-h192.168.1.20-p12345info

1531123473-9466-e5534b85a096adedb56a067ee8c0.png

数据导入:

Shell

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

1

pythonredisdl.py-l-H192.168.1.20-p12345-d0/tmp/db0.json

1531123473-6480-cec4177994aaf2f3d02dfd2613a2.png

分别查看8001、8002、8003三个单独rediscluster实例,可以看到通过corvus导入的数据已经分摊到各redis实例中,分别为545、626、584个keys。总数据为1755(导入后一个key过期了)。

注:redisdl.py导入数据时,会去检查redis的版本,由于使用corvus时,检查出的版本为corvus版本,比redis3.0+的版本低,故执行时会报错,需手动更改redisdl.py脚本:

Shell

vi redisdl.py

version = [int(part) for part inself.info()['redis_version'].split('.')]

version = 3

1

2

3

viredisdl.py

version=[int(part)forpartinself.info()['redis_version'].split('.')]

version=3

文章转载并修改:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值