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_url
和dst_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)
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/22/python-implement-data-migration-between-different-redis-instances/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论