zoukankan      html  css  js  c++  java
  • 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

    参考:https://www.cnblogs.com/soilge/p/11641327.html

  • 相关阅读:
    指针符号的优先级
    逆序链表建立和输出
    typedef关键字编写步骤
    CasePlayer2-嵌入式软件静态解析工具
    嵌入式软件测试工具和测试方法
    单元测试必要性
    基于winAMS、CasePlayer2嵌入式软件单元测试
    嵌入式软件测试软件--winAMS支持芯片
    基于模型开发 Back-to-Back测试统合工具-MC-Verifier
    单元测试工具-winAMS
  • 原文地址:https://www.cnblogs.com/hixiaowei/p/13242342.html
Copyright © 2011-2022 走看看