redis查找大key

摘要:
在Redis中,您可以找到一个大键并直接编写代码#!
redis中查找出比较大的key 

下面直接上代码 (请在测试机上测试)


#!/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", ""))

  

免责声明:文章转载自《redis查找大key》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇教你优化yum源。配置阿里云的yum镜像源(base和epel)Burpsuite Intruder Numbers Payload格式和设置间隔时间下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基于Zabbix WebUI的API实现自动化添加主机实战案例

      基于Zabbix WebUI的API实现自动化添加主机实战案例                                作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。   在之前的笔记里我分享了如何批量添加zabbix agent主机,今天我们就实现如何基于zabbix webUI的API接口实现批量添加主机。有的小伙伴...

USB的挂起和唤醒 (Suspend and Resume)〈转〉

  USB协议的第9章讲到USB可见设备状态[Universal Serial Bus Specification, Section 9.1.1, Pg 239],分为连接(Attached),上电(Powered),默认(Default),地址(Address),配置(Configured)和挂起(Suspended)6个状态。所谓可见,即USB系统和主...

SpringBoot整合redis哨兵主从服务

前提环境:   主从配置  http://www.cnblogs.com/zwcry/p/9046207.html   哨兵配置  https://www.cnblogs.com/zwcry/p/9134721.html 1.配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xm...

玩转Redis之Window安装使用(干货)

     距离上次定Gc.Db框架,好久没有更新博客了,今日没什么事,就打算就Redis写点东西。      Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。      关于Redis,大家都不会陌生,网上关于Redis...

Redis系列(四)-Redis 哨兵(Sentinel)模式

Redis的主从复制模式下, 一旦主节点由于故障不能提供服务, 需要人工将从节点晋升为主节点, 同时还要通知应用方更新主节点地址, 对于很多应用场景这种故障处理的方式是无法接受的。 可喜的是Redis从2.8开始正式提供了Redis Sentinel(哨兵) 架构来解决这个问题。Redis主从复制的缺点:没有办法对master进行动态选举,需要使用Sent...

Redis开启AOF导致的删库事件

事件背景 Redis主从开启AOF,错误操作导致数据被清空。 Redis主要作用:缓存、队列。 事故过程 Redis搭建了主从,持久化方式为RDB,RDB没有定时备份,且AOF都没有开启。 考虑到开启AOF会使Redis安全性更高,所以尝试先在从机做测试,没问题后再上主机。 Redis开启AOF的方式非常简单,打开Redis的conf文件,找到【appe...