背景:
有2套系统,都用到redis, 且有共同的数据。 系统1使用redis 的db=1, 系统2 使用redis 的 db=4。系统1已经完整的部署好了。现在需要将db=1中的数据复制到db=2中。
由于redis 服务是云服务器的内网,且其他的服务器上没有安装redis-cli。所以想到centos 服务器上自带了 python。 那就用python 实现数据转移。
具体代码实现
1、首先统计db=1中的数据类型:
import redis
src_redis = redis.Redis(host='192.168.0.124', port=6379, db=1, password=2000")
type_list = [] # 统计数据类型
for k in src_redis.keys():
t = r.type(k) # 获取数据类型
if t not in type_list:
type_list.append(t)
print(type_list)
输出:
["string", "hash"]
2、将数据从 db=1 复制到 db=4
import redis
src_redis = redis.Redis(host='192.168.0.124', port=6379, db=1, password=2000")
target_redis = redis.Redis(host='192.168.0.124', port=6379, db=4, password="2000")
for k in src_redis.keys():
t = r.type(k) # 获取数据类型
if t == 'string':
v1 = src_redis.get(k)
target_redis.set(k, v1)
if t == "hash":
hash_data = src_redis.hgetall(k)
for k2,v2 in hash_data.items():
target_redis.hset(k, k2,v2)
完成复制