专栏首页python3利用python 迁移单个redis的

利用python 迁移单个redis的

环境的是python3 / pip3

import sys

import redis


# 迁移hash
def moveHash(cursor):
    cursor, data = r.hscan(key, cursor)
    for eachKey in data:
        rNew.hset(key, eachKey, data[eachKey])
    print(key, "---处理了---", len(data), '个')
    if cursor != 0:
        print(cursor, "批处理")
        moveHash(cursor)
    else:
        print(cursor, "处理完成了")


# 迁移list
def moveList():
    length = r.llen(key)
    if length == 0:
        print(key, "---list迁移结束---剩余长度", length)
    else:
        # 每次迁移一千个
        start = length - 1000;
        if start < 0:
            start = 0
        data = r.lrange(key, start, -1)
        pl = r.pipeline();
        for eachI in data:
            setAdd = r.sadd("ordernokey_move", eachI);
            if setAdd == 1:
                pl.rpush("aaaaaaa", eachI)
            else:
                print("迁移的key的值重复了", eachI)
        pl.execute()
        if start == 0:
            # 清空
            r.ltrim(key, 1, 0)
        r.ltrim(key, 0, start - 1)
        moveList()


############################


key = sys.argv[1]

print('输入的key是:' + key)
# ip = '47.254.149.109'
# password = 'Kikuu2018'

ip1 = '115.236.170.78'
password1 = 'kikuu2018'

ip2 = '115.236.170.78'
password2 = 'kikuu2018'

# 连接redis
r = redis.Redis(host=ip1, password=password1, port=6379, db=0,
                decode_responses=True)

# 连接redis  带接收的库
rNew = redis.Redis(host=ip2, password=password2, port=6379, db=0,
                   decode_responses=True)

keyType = r.type(key)

if keyType == 'string':
    rNew.set(key, r.get(key))
    print("key=" + key + "迁移到新库")

if keyType == 'hash':
    cursor = r.hlen(key)
    print(" key值长度是 + ", cursor)
    moveHash(0)

if keyType == 'list':
    moveList()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • h3c 更新ssh client key

    The server's host key does not match the local cached key. Either the server adm...

    py3study
  • 使用Python读取plist文件并分割

    根据百度百科介绍,plist是一种文件形式,通常用于储存用户设置,也可以用于存储捆绑的信息,该功能在旧式的Mac OS中是由资源分支提供的。由于Plist中存储...

    py3study
  • python 获取网卡实时流量

    使用python监控系统时,获取网卡流量是比较难搞的,网上找了一个比较好的脚本,分享一下!

    py3study
  • 算法原理系列:散列表

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1147447
  • Redis命令与配置

        slaveof  127.0.0.1 6379(设置Mater的Host以及Port)

    莫问今朝
  • 【Flutter 专题】39 图解 Android 打包 APK 文件

    和尚是搞 Android 的,曾经尝试过打包 APK 文件失败,由于种种原因暂停研究,今天重新学习一下如何打包 APK 。官网讲解的清楚明了,和尚在...

    阿策
  • Redis学习一(基础入门).

    一、前言     Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、key-Value 的数据库、并提供多...

    JMCui
  • 认识redis数据类型

    Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

    老雷PHP全栈开发
  • 京东毫秒级热key探测框架设计与实践,已完美支撑618大促

    在拥有大量并发用户的系统中,热key一直以来都是一个不可避免的问题。或许是突然某些商品成了爆款,或许是海量用户突然涌入某个店铺,或许是秒杀时瞬间大量开启的爬虫用...

    天涯泪小武
  • Linux下安装Redis3

    下载 下载地址 http://redis.io/download Linux 下执行 wget http://download.redis.io/relea...

    小柒2012

扫码关注云+社区

领取腾讯云代金券