58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
# -*- 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()
|