Redis之bigkeys

1.  什么是bigkey

    按照数据结构分类

      字符串类型bigkey  单个value很大,一般超过10KB就认为是bigkey

      非字符串类型bigkey  哈希,列表,集合,有序集合,体现在元素个数过多  

2.  bigkey的危害

    内存空间不均匀

    超时阻塞

    网络拥塞        

3.  如何发现bigkey 

    1.  被动收集

        修改redis客户端,当抛出异常时打印出所操作的key,方便排查bigkey问题

    2.  主动检测

        scan+debug object 

        结合pipeline机制和从节点完成

    3.  建议使用第三方工具  进入gopath安装第三方包:

  go get github.com/cupcake/rdb
  
  下载https://github.com/weiyanwei412/rdb_bigkeys 
  解压rdb_bigkeys-master.zip:
  unzip rdb_bigkeys-master.zip
  mv rdb_bigkeys-master rdb_bigkeys
  cd rdb_bigkeys
  go mod init bigkeys
  go mod tidy 
  无法拉下包
  go env -w GOPROXY=https://goproxy.cn 
  go mod verify
  go mod vendor
  go get sudo 
  go build
  
  ./rdb_bigkeys --bytes 1024 --file /tmp/222.csv --sep 0 --sorted --threads 4 /redis_backup/redis1/master/222/2022-04-07/dump.rdb

4.  如何删除bigkey

    1.  删除字符串类型数据耗时

        

 

    2.  删除非字符串类型数据耗时

        

 

    3.  删除字符串类型

        使用del命令

    4.  删除非字符串类型

        hscan获取field-value

        hdel删除每个field

        最后del key操作

    5.  redis4.0版本支持lazy delete free的模式,删除bigkey不会阻塞redis      

posted @ 2022-04-07 17:36  奋斗史  阅读(640)  评论(0)    收藏  举报