diff --git a/tools/migratedb/migratedb.py b/tools/migratedb/migratedb.py new file mode 100644 index 0000000..876bc2e --- /dev/null +++ b/tools/migratedb/migratedb.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +#!/usr/bin/python + +import pymysql +import hashlib +import json +import urllib.request +import base64 +import time +import datetime +import redis +import os +import functools + +CONFIG_DIR = '.' +context = { + 'channel': 0, + 'dbname_prefix': '' +} + +def scanKeys(r, key_prefix, keys): + scan_key = key_prefix + '*' + cursor, keys = r.scan(0, scan_key, 1000) + scan_count = 0 + while cursor != 0 or len(keys) > 0: + #end + keys = [] + if cursor != 0: + cursor, keys = r.scan(cursor, scan_key, 1000) + scan_count += 1 + if scan_count > 10000: + break + #end while cursor + +def exportRedis(context, redis_conf, redis_rule_conf): + for conf in redis_conf: + r = redis.Redis(host = conf['host'], + port = conf['port'], + password = conf['passwd'], + charset = 'utf8' + ) + for rule in redis_rule_conf: + keys = {} + scanKeys(r, rule['key_prefix'], keys) + #end for rule + #end for conf + +def main(): + global context + db_conf = json.loads(open(CONFIG_DIR + '/mysql_list.json', 'r').read()) + redis_conf = json.loads(open(CONFIG_DIR + '/redis_list.json', 'r').read()) + db_rule_conf = json.loads(open(CONFIG_DIR + '/mysql_rule.json', 'r').read()) + redis_rule_conf = json.loads(open(CONFIG_DIR + '/redis_rule.json', 'r').read()) + exportRedis(context, redis_conf, redis_rule_conf) + +if __name__ == "__main__": + main() diff --git a/tools/migratedb/redis_rule.json b/tools/migratedb/redis_rule.json new file mode 100644 index 0000000..ddc0dd3 --- /dev/null +++ b/tools/migratedb/redis_rule.json @@ -0,0 +1,6 @@ +[ + { + "key_prefix": "", + "pattern": "md5" + } +]