type

小说:你敢不敢把手机借给陌生人?作者:安成戏丁更新时间:2019-03-23字数:79921

type


    众所周知,redis里面的大key存在是非常危险的一件事情。因为最近的工作转移到中间件相关的工作,因此关注了一下bigkey的扫描方法。首先介绍一下阿里云提供的扫描脚本:

具体可见:https://yq.aliyun.com/articles/117042?t=t1

    我对这个脚本进行了一个压力测试,在redis的内存为15G,key的数量为2KW,ops为40K到80K之间,在这种情况下,阿里云的脚本完全不能跑成功(估计跑出来的时间以天为单位),主要原因是每确认一个key的情况,就需要与redis交互多次。因此,我对它的脚本进行了改造,加入了pipeline和debug object方法,脚本如下:

import sys
import redis


def find_big_key_normal(db_host, db_port, db_password, db_num):
  client = redis.StrictRedis(host=db_host, port=db_port, password=db_password, db=db_num)
  i=0
  temp = client.scan(cursor=i,count=1000)
  j =0
  while temp[0]>0 :
    i=temp[0]
    j=j+len(temp[1])
    try:
      r = client.pipeline(transaction=False)
      for k in temp[1]:
        r.debug_object(k)
      tempA = r.execute()
      x = 0
      for key in tempA:
        length = key.get("serializedlength")
        ##type = key.get("encoding")
        if length > 10240 :
          type = client.type(temp[1][x])
          print temp[1][x], type,length
        x=x+1
    except :
      print "a execption come"
    temp = client.scan(cursor=i,count=1000)

  
if __name__ == "__main__":
  if len(sys.argv) != 4:
     print "Usage: python ", sys.argv[0], " host port password "
     exit(1)
  db_host = sys.argv[1]
  db_port = sys.argv[2]
  db_password = sys.argv[3]
  r = redis.StrictRedis(host=db_host, port=int(db_port), password=db_password)
  nodecount = 1
  keyspace_info = r.info("keyspace")
  for db in keyspace_info:
    print "check ", db, " ", keyspace_info[db]
    find_big_key_normal(db_host, db_port, db_password, db.replace("db", ""))

我对上面的脚本同样进行了一个压力测试,在redis的内存为15G,key的数量为2KW,ops为40K到80K之间,在这种情况下:

脚本10分钟跑完,完全可用。

    说明:阿里云的脚本是支持cluster的,我这个脚本是只支持单机的,大家有兴趣的可以自己去更改。

当前文章:http://zxqss.com/content/03-10/94097/content_6352224339.html

发布时间:2019-03-23 12:21:44

文艺女青年的奇异美 台导游抵制康师傅到底是怎么回事? 除了生死,都是小事 新西兰中小学教育有多好?多文化中文热 非比学习能力训练中的一天 茶叶的基本分类,品质的概念。 天津心理工作站战友印象之赵海华 你还不是娶了别人,我也没有嫁给你 男人和女人的六个思考差异 从厦门BRT爆炸案谈反社会性人格障碍的防制

拯救地球的美国大片,你看过哪些? 青年创业者为什么失败几率高? 柠檬,杨桃,遇上科罗娜 天津心理工作站战友印象之赵海华 小升初:不学奥数,到底能不能上市重点?(上) 佛家禅语影响人生 情话和性话,男女怎么说才受用? 儿童鼾症的季节性变化 怀孕日记——不是公主仆妇 孩子的鲜血,能换回父母的觉醒吗? 罗李华谈:属虎的人2016年运程 讨论:奸淫幼女算不算强奸? 智商仅次于爱因斯坦的天才男孩需要帮助! 卵子冷冻能否带来“静蕾效应”? 恐惧的形成和消除 感觉自己干什么都不行,怎么办? 奔向未来的日子 为什么我们要称呼他为芈月呢? 女性最佳生育年龄延后 30-39岁生的娃更聪明?

编辑:顺秉顺

我要说两句: (0人参与)

发布