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解析ツールのインストール
3、条件を満たすkeyをろ過する
次に、スクリプトを書き、バッチで処理します.
vim/root/batch.sh 内容は次のとおりです.
これでスクリプトが山積みになります
次はスクリプトを書いて、一括で実行すればいいです.
例えば、ある研究開発のオンラインコードは、ある接頭辞の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