Redis中如何发现并优化生产环境的big key?

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

1、寻找big key
一般来讲找到redis中的big key有以下几种方法
一、redis-cli自带--bigkeys,例如:redis-cli -h <hostip> -a <password> --bigkeys
二、获取生产Redis的rdb文件,经过rdbtools分析rdb生成csv文件,再导入MySQL或其余数据库中进行分析统计,根据size_in_bytes统计bigkey
三、经过python脚本,迭代scan key,每次scan 1000,对扫描出来的key进行类型判断,例如:string长度大于10K,list长度大于10240认为是big bigkeys
四、其余第三方工具,例如:redis-rdb-cli 
地址:https://github.com/leonchen83/redis-rdb-cli

2、优化big key
一、优化big key的原则就是string减小字符串长度,list、hash、set、zset等减小成员数
二、以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
三、string类型的big key,如文章正文,建议不要存入redis,用文档型数据库MongoDB代替或者直接缓存到CDN上等方式优化
相关文章
相关标签/搜索