I wrote a small python script to move data between two redis servers: (only a support list and line types, and you have to install the python redis client):
''' Created on 2011-11-9 @author: wuyi ''' import redis from optparse import OptionParser import time def mv_str(r_source, r_dest, quiet): keys = r_source.keys("*") for k in keys: if r_dest.keys(k): print "skipping %s"%k continue else: print "copying %s"%k r_dest.set(k, r_source.get(k)) def mv_list(r_source, r_dest, quiet): keys = r_source.keys("*") for k in keys: length = r_source.llen(k) i = 0 while (i<length): print "add queue no.:%d"%i v = r_source.lindex(k, i) r_dest.rpush(k, v) i += 1 if __name__ == "__main__": usage = """usage: %prog [options] source dest""" parser = OptionParser(usage=usage) parser.add_option("-q", "--quiet", dest="quiet", default = False, action="store_true", help="quiet mode") parser.add_option("-p", "--port", dest="port", default = 6380, help="port for both source and dest") parser.add_option("", "--dbs", dest="dbs", default = "0", help="db list: 0 1 120 220...") parser.add_option("-t", "--type", dest="type", default = "normal", help="available types: normal, lpoplist") parser.add_option("", "--tmpdb", dest="tmpdb", default = 0, help="tmp db number to store tmp data") (options, args) = parser.parse_args() if not len(args) == 2: print usage exit(1) source = args[0] dest = args[1] if source == dest: print "dest must not be the same as source!" exit(2) dbs = options.dbs.split(' ') for db in dbs: r_source = redis.Redis(host=source, db=db, password="", port=int(options.port)) r_dest = redis.Redis(host=dest, db=db, password="", port=int(options.port)) print "______________db____________:%s"%db time.sleep(2) if options.type == "normal": mv_str(r_source, r_dest, options.quiet) elif options.type == "lpoplist": mv_list(r_source, r_dest, options.quiet) del r_source del r_dest
wuyi
source share