• python操作redis两个数据库间的数据迁移案例(hash)


    #!/usr/bin/env python
    #coding=utf8
    #redis两个数据库间的数据迁移
    
    import redis
    import json
    
    redis_conn_6300 = redis.Redis(host="127.0.0.1",port="6300",password="123456",db=0)
    
    redis_conn_5550 = redis.Redis(host="127.0.0.1",port="5550",password="123456",db=0)
    
    server_id = 41
    index = 0
    redis_center_pids=[]
    
    while True:
        index,data = redis_conn_6300.scan(index,count=1000)
        for x in data:
            if (server_id<<20) < int(x) < (server_id+1<<20):    #偏移量20位,取值id的一种算法
                redis_center_pids.append(x)
                #print x
        if index == 0: break    #如果新游标返回0表示迭代已结束
    
    for pid in redis_center_pids:
        value =  redis_conn_6300.hgetall(pid)    #获取对应key下的所有内容
        print value    #获得第一个数据库对应key的值,类型为 dict
        redis_conn_5550.hmset(pid,value)    #插入类型为 dict 的数据到另一个数据库  hmset(key,value)
    
    '''
    Redis Scan 命令用于迭代数据库中的数据库键。
    SCAN 命令是一个基于游标的迭代器,每次被调用之后,都会向用户返回一个新的游标,用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数,以此来延续之前的迭代过程。
    SCAN 返回一个包含两个元素的数组,第一个元素是用于进行下一次迭代的新游标,而第二个元素则是一个数组,这个数组中包含了所有被迭代的元素。如果新游标返回 0 表示迭代已结束。
    当 SCAN 命令的游标参数被设置为 0 时,服务器将开始一次新的迭代,而当服务器向用户返回值为 0 的游标时,表示迭代已结束。
    '''
  • 相关阅读:
    启用EMF的自动生成UUID功能
    关于web开发使用utf8编码所需的配置
    Cognos8安装使用问题记录
    ILOG JViews Diagrammer使用记录
    四种方法修改Palm Simulator使用的ROM
    无光驱笔记本n410c装windows xp总结
    JSF开发问题和解决
    Equinox OSGi服务器应用程序的配置步骤
    从google获得大尺寸地图图片文件
    Amazon EC2配置步骤和一些问题
  • 原文地址:https://www.cnblogs.com/chenjw-note/p/13751174.html
Copyright © 2020-2023  润新知