# -*- 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, matched_keys): scan_key = key_prefix + '*' keys = [] cursor, keys = r.scan(0, scan_key, 1000) scan_count = 0 while cursor != 0 or len(keys) > 0: for key in keys: matched_keys[key] = key #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 saveKeys(r, keys, curr_file): for key in keys: data = r.get(key) def exportRedis(context, redis_conf, redis_rule_conf): curr_file = open(context['out_dir', 'w']) 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: matched_keys = {} scanKeys(r, rule['key_prefix'], matched_keys) saveKeys(r, curr_file, matched_keys) #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()