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", ""))

  

最新文章

  1. 一个java源文件中为什么只能有一个public类。
  2. 环信webim1.1.2版本在windows下npm环境搭建错误解决
  3. jenkins2 pipeline 语法快速参考
  4. Servlet Threading Model
  5. Angularjs总结(六) 上传附件
  6. canvas烟花-娱乐
  7. python操作----Memcached
  8. [2017.02.21] 《Haskell趣学指南 —— Learning You a Haskell for Great Good!》
  9. Vi快捷操作 vim配置【shell文件格式从windows转换为linux】
  10. C#生成真值表
  11. 约数,gcd,exgcd.
  12. pagehelper调用mybatis报错java.lang.NoSuchMethodError:org.apache.ibatis.reflection.MetaObject.forObject
  13. Android悬浮窗及其拖动事件
  14. 3、JUC--ConcurrentHashMap 锁分段机制
  15. python3用http.server模块搭建简易版服务器
  16. (笔记)Linux中的终端、控制台、tty、pty
  17. SpringMVC由浅入深day01_3非注解的处理器映射器和适配器
  18. android studio 3.0 安装配置
  19. java爬虫爬取的html内容中空格( )变为问号“?”的解决方法
  20. SpringBoot基础的使用

热门文章

  1. c# webapi结合swagger的使用
  2. Unity 3D,地形属性
  3. Spring Boot2 系列教程(二)创建 Spring Boot 项目的三种方式
  4. Taro框架下qq小程序开发体验
  5. 【Offer】[35] 【复杂链表的复制】
  6. SpringCloud学习笔记(2):使用Ribbon负载均衡
  7. Vue 前端uni-app多环境配置部署服务器的问题
  8. Nuget打包类库及引用
  9. JavaScript 基础入门
  10. tomcat启动抛出异常