#!/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 not index: 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 表示迭代已结束。 ‘‘‘
原文:https://www.cnblogs.com/chenjw-note/p/13751174.html