Python实现Redis不同实例间数据迁移

Redis单机版数据迁移。从一个实例迁移到另一个实例,使用于本机不同端口迁移备份、其他机器间迁移备份。

工具是一个简单的 python 脚本,指定 redis 的源和目标信息即可。

脚本链接:https://github.com/staugur/scripts/blob/master/services/migrateredis.py

其内容直接贴在下面:

# -*- coding: utf-8 -*-
"""
    migrateredis.py
    ---------------
    迁移redis数据,可以从本机迁移到其他机器,迁移一个库或多个库中数据。
    原理:redis dump/restore命令
    依赖:pip install redis>=2.10.5
"""

from redis import from_url, RedisError

def migrate(src_url, dst_url):
    src = from_url(src_url)
    dst = from_url(dst_url)
    for key in src.keys():
        try:
            dst.restore(key, src.ttl(key), src.dump(key))
        except RedisError:
            print('Migrate %s failed' % key)

if __name__ == "__main__":
    # 源redis的url,格式:
    #redis://[:password]@host:port/db
    #host,port必填项,如有密码,记得密码前加冒号,比如redis://localhost:6379/0
    src_url = "redis://@127.0.0.1:6379/0"
    # 迁移目标redis的url
    dst_url = "redis://@127.0.0.1:16379/0"
    # 执行
    if src_url and dst_url:
        migrate(src_url, dst_url)

注意:

使用时先安装依赖模块,命令是:pip install redis>=2.10.5

再修改src_urldst_url,参见注释,然后用python执行此脚本。

pip install时提示not found command,CentOS系统使用yum install -y python-pip安装,Ubuntu使用apt-get install python-pip

封装:

# -*- coding: utf-8 -*-
"""
    migrateredis.py
    ---------------
    迁移redis数据,可以从本机迁移到其他机器,迁移一个库或多个库中数据。
    原理:redis dump/restore命令
    依赖:pip install redis>=2.10.5
"""

from sys import argv
from redis import from_url, RedisError

def migrate(src_url, dst_url):
    src = from_url(src_url)
    dst = from_url(dst_url)
    for key in src.keys():
        try:
            dst.restore(key, src.ttl(key) or 0, src.dump(key))
        except RedisError as e:
            print(e)
            print('Migrate %s failed' % key)

if __name__ == "__main__":
    # 源redis的url,格式:
    #redis://[:password]@host:port/db
    #host,port必填项,如有密码,记得密码前加冒号,比如redis://localhost:6379/0
    src_url = argv[1]
    # 迁移目标redis的url
    dst_url = argv[2]
    # 执行
    if src_url and dst_url:
        migrate(src_url, dst_url)

转载至:https://blog.saintic.com/blog/265.html

上一篇 Python时间加减
下一篇 Node.js 入门
目录
文章列表
1 MySQL事务初识
MySQL事务初识
2
使用AWS的ELB服务时为Nginx启用代理协议
使用AWS的ELB服务时为Nginx启用代理协议
3
微信支付服务商-小程序支付-商户传入的appid参数不正确,请联系商户处理
微信支付服务商-小程序支付-商户传入的appid参数不正确,请联系商户处理
4
MySQL修改编码
MySQL修改编码
5
Spring Boot配置Cors解决跨域请求问题
Spring Boot配置Cors解决跨域请求问题
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。