python迁移redis数据库

python迁移redis数据库
   python3迁移redis数据库,注意数据写入后的编码问题。

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import redis

redis_1 = redis.StrictRedis(host='192.168.2.3',port=6379,password="password",db=2,socket_connect_timeout=6000,encoding='GBK')
redis_2 = redis.StrictRedis(host='192.168.2.6',db=2,port=63790,password="password")
def copydb():
    for key in redis_1.keys():
        # 转成字符串形式
        key = str(key)[2:-1]
        key_type = str(redis_1.type(key))[2:-1]
        #对字符串类型的键值对执行操作------------------------------------------
        if key_type == 'string':
            print(redis_1.get(key))
            redis_2.set(key,str(redis_1.get(key),encoding='utf-8')[2:-1])
            print('写入到数据库B成功,{}'.format(redis_2.get(key)))
        #对哈希字典类型的键值对执行操作-----------------------------------------
        if key == 'ip_op_unit_wbj' :
            for son_key in redis_1.hkeys(key):
                son_key = str(son_key,encoding='utf-8')
                son_value = str(redis_1.hget(key,son_key),encoding='utf-8')
                print(son_value)
                redis_2.hset(key,son_key,son_value)
            print('写入到数据库B成功,{}'.format(redis_2.hgetall(key)))
        #对列表类型的键值对执行操作---------------------------------------------
        elif key_type == 'list':
            print('redis_1:',redis_1.lrange(key, 0, redis_1.llen(key)))
            for value in redis_1.lrange(key, 0, redis_1.llen(key)):
                v1 = str(value,encoding='utf-8')[2:-1]
                redis_2.rpush(key, v1)
            print('写入到数据库B成功,{}'.format(redis_2.llen(key)))
        #对集合类型的键值对执行操作---------------------------------------------
        elif key_type == 'set':
            print('redis_1:',key, redis_1.scard(key))
            for value in redis_1.smembers(key):
                value = str(value,encoding='utf-8')[2:-1]
                redis_2.sadd(key,value)
            print('写入到数据库B成功,{}'.format(redis_2.scard(key)))
        #对有序集合类型的键值对执行操作------------------------------------------
        elif key_type == 'zset':
            for value in redis_1.zrangebyscore(key, 0, 1000000000):
                value = str(value)[2:-1]
                print(key)
                score = redis_1.zscore(key, value)
                redis_2.zadd(key, {value: score})
            print('\n写入到数据库B成功,{}'.format(redis_2.zcard(key)))
if __name__ == '__main__':
    copydb()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值