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上等方式優化
相關文章
相關標籤/搜索