redis查找大key
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | redis中查找出比较大的key <br><br>下面直接上代码 (请在测试机上测试)<br><br><br> #!/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 : bigKey = True if bigKey: print db, k, type , length def find_big_key_normal(db_host, db_port, db_num): db_password = "123456" 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 = "123456" 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" , "")) |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步