zoukankan      html  css  js  c++  java
  • Redis中如何发现并优化big key?

    Redis中的大key一直是重点需要优化的对象,big key既占用比较多的内存,也可能占用比较多的网卡资源,造成redis阻塞,因此我们需要找到这些big key进行优化

    一、寻找big key
    通常来说找到redis中的big key有如下几种方法

    1. redis-cli自带--bigkeys,例如:redis-cli -h -a --bigkeys
    2. 获取生产Redis的rdb文件,通过rdbtools分析rdb生成csv文件,再导入MySQL或其他数据库中进行分析统计,根据size_in_bytes统计bigkey
    3. 通过python脚本,迭代scan key,每次scan 1000,对扫描出来的key进行类型判断,例如:string长度大于10K,list长度大于10240认为是big bigkeys
    4. 其他第三方工具,例如:redis-rdb-cli
      地址:https://github.com/leonchen83/redis-rdb-cli

    二、优化big key

    1. 优化big key的原则就是string减少字符串长度,list、hash、set、zset等减少成员数
    2. 以hash类型举例来说,对于field过多的场景,可以根据field进行hash取模,生成一个新的key,例如原来的
      hash_key:{filed1:value, filed2:value, filed3:value ...},可以hash取模后形成如下key:value形式
      hash_key:mod1:{filed1:value}
      hash_key:mod2:{filed2:value}
      hash_key:mod3:{filed3:value}
      ...
      取模后,将原先单个key分成多个key,每个key filed个数为原先的1/N
    3. string类型的big key,如文章正文,建议不要存入redis,用文档型数据库MongoDB代替或者直接缓存到CDN上等方式优化
  • 相关阅读:
    第一阶段SCRUM冲刺-06
    第一阶段SCRUM冲刺-05
    第一阶段SCRUM冲刺-04
    第一阶段SCRUM冲刺-03
    第一阶段SCRUM冲刺-02
    第一阶段SCRUM冲刺-01
    19年春第十周学习
    个人作业8-单词统计
    19年春第九周学习
    个人作业6-用户模板和用户场景
  • 原文地址:https://www.cnblogs.com/os-linux/p/11928930.html
Copyright © 2011-2022 走看看