redisキー接頭辞のキーをクリーンアップ

1557 ワード

redis接頭辞のkeyをクリーンアップ
例えば、ある研究開発のオンラインコードは、ある接頭辞のkeyに汚いデータ(例えばkey接頭辞名がkey_  ), これらの問題keyを迅速に整理する必要があります.
よく使われる方法は2つあります.
1、dumpは1つの全量のデータを出して、それから条件に合致するkeyを探し出して、削除操作を行います【推奨】
2、scanスキャンredisを使用して、すべてのkeyを取り出し、条件に合ったkeyを削除する
ここでは、次のようにして、最初の方法を使用します.
1、slaveノードbgsaveコマンドdumpで全量のデータを出す
bgsave  ,生成されたファイル名の類似  dump-6379.rdb 
2、rdb解析ツールのインストール
pip install rdbtools python-lzf   # python2.7             

rdb -c memory dump-6379.rdb > memory.csv  #       rdb    

3、条件を満たすkeyをろ過する
awk  -F ',' '{print $3 ,  $NF }'  memory.csv > keys.txt    #    key        

egrep key_  keys.txt > /root/key_.txt     #   key_    key     

cat /root/key_.txt | sort -k 2 -r > /root/sort_keys    #  key          

egrep 2019-09-10 /root/sort_keys  > /root/match_keys    #   :       ,     2019-09-10    key(       ,           key,           )

awk '{print $1}' /root/match_keys > /root/filter_keys    #         key        

mkdir /root/test/

split -2000 /root/filter_keys  /root/test/    #   filter_keys          2k        ,        

次に、スクリプトを書き、バッチで処理します.
vim/root/batch.sh  内容は次のとおりです.
for i in `ls /root/test/`; do
echo "while read line;do
echo \"del \$line\" | redis-cli -h 127.0.0.1 -p 6379 
done  /root/run_${i}.sh
chmod +x /root/run_${i}.sh 
done

これでスクリプトが山積みになります
次はスクリプトを書いて、一括で実行すればいいです.
#!/bin/bash
for i in `ls run*.sh`; do 
nohup sh $i > /dev/null &
done