溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis 清理某個key前綴的key

發布時間:2020-07-08 14:22:32 來源:網絡 閱讀:1059 作者:我的二狗呢 欄目:系統運維

redis清理某個前綴的key


例如,某次研發上線代碼,造成了某種前綴的key出現了臟數據(例如key前綴名稱為 key_? ), 我們需要快速的清理掉這些問題key。


常用的方法有2種:

1、dump出一個全量數據,然后找出符合條件的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/test/${i}"?>?/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





向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女