天天看點

阿裡雲redis大key搜尋工具初始化環境掃描腳本

redis提供了list、hash、zset等複雜類型的資料結構,業務在使用的時候可能由于key設計不合理導緻某個key過大,由于redis簡單的單線程模型,業務在擷取或者删除大key的時候都會有一定的影響,另外在叢集模式下由于大key的産生還很容易導緻某個子節點的記憶體滿,綜上所述我們需要提供大key的搜尋工具。

下載下傳python用戶端

tar -xvf redis-2.10.5.tar.gz

cd redis-2.10.5

sudo python setup.py install

對于redis主從版本可以通過scan指令進行掃描,對于叢集版本提供了iscan指令進行掃描,指令規則如下, 其中節點個數node可以通過info指令來擷取到

可以通過python find_bigkey host 6379 password來執行,支援阿裡雲redis的主從版本和叢集版本的大key查找,預設大key的門檻值為10240,也就是對于string類型的value大于10240的認為是大key,對于list的話如果list長度大于10240認為是大key,對于hash的話如果field的數目大于10240認為是大key。另外預設該腳本每次搜尋1000個key,對業務的影響比較低,不過最好在業務低峰期進行操作,避免scan指令對業務的影響。