redis查找bigkeys--密码带特殊字符
Posted littlevigra
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis查找bigkeys--密码带特殊字符相关的知识,希望对你有一定的参考价值。
1.密码特殊字符
[root@VM_0_111_centos redis]# cat mybigkeys.py #!/usr/bin/env python import sys import redis def check_big_key(r, k): bigKey = False length = 0 try: type = r.type(k) if type == "string": length = r.strlen(k) elif type == "hash": length = r.hlen(k) elif type == "list": length = r.llen(k) elif type == "set": length = r.scard(k) elif type == "zset": length = r.zcard(k) except: return # if length > 10240: if length > 10240: bigKey = True if bigKey: print db, k, type, length def find_big_key_normal(db_host, db_port, db_num): db_password = "D0p(8i!!!!" r = redis.StrictRedis(host=db_host, port=db_port, db=db_num,password=db_password) for k in r.scan_iter(count=1000): check_big_key(r, k) def find_big_key_sharding(db_host, db_port, db_num, nodecount): r = redis.StrictRedis(host=db_host, port=db_port, db=db_num) cursor = 0 for node in range(0, nodecount): while True: iscan = r.execute_command("iscan", str(node), str(cursor), "count", "1000") for k in iscan[1]: check_big_key(r, k) cursor = iscan[0] print cursor, db, node, len(iscan[1]) if cursor == "0": break; if __name__ == \'__main__\': if len(sys.argv) != 3: print \'Usage: python \', sys.argv[0], \' host port password \' exit(1) db_host = sys.argv[1] db_port = sys.argv[2] db_password = "D0p(8i!qa!!!" r = redis.StrictRedis(host=db_host, port=int(db_port),password=db_password) nodecount = 1 #nodecount = r.info()[\'nodecount\'] keyspace_info = r.info("keyspace") for db in keyspace_info: print \'check \', db, \' \', keyspace_info[db] if nodecount > 1: find_big_key_sharding(db_host, db_port, db.replace("db", ""), nodecount) else: find_big_key_normal(db_host, db_port, db.replace("db", "")) [root@VM_0_111_centos redis]#
2.执行
[root@VM_0_111_centos redis]# python mybigkeys.py 10.0.0.74 6379
以上是关于redis查找bigkeys--密码带特殊字符的主要内容,如果未能解决你的问题,请参考以下文章