最近公司有個專案,由於遊戲服務端再對redis進行存資料時並沒有設定key的過期時間,資料量大了後導致磁碟佔滿,就需要對無用的key進行刪除或者設定過期時間。
講下大致思路
redid-cli keys "*" > keys.txt
將redis所有對key存入txt檔案,裡面是以每個key為一行儲存對。資料量如果太大到千萬或者上億,可以進行檔案拆分。然後對檔案進行讀取,獲取key然後判斷過濾,對需要刪除或者設定過期時間的執行操作。(由於redis的del操作可以一次性傳入多個,則可以把key存入集合達到一定數量後再刪除集合中到key。這樣就沒必要取一行執行一次刪除操作,這樣會比較慢。還有如果程式直接用keys獲取所有key,量大了的話,記憶體沒這麼大來儲存
還查到個redis到工具命令
redis-cli -h 127.0.0.1 -p 6333 -a '123' keys "user:test:*"|xargs redis-cli -h 127.0.0.1 -p 6333 -a '123' del
如果有大佬還有其他更優方法歡迎指導。。。
本作品採用《CC 協議》,轉載必須註明作者和本文連結