使用redis的過程中,經常會遇到要批量刪除某種規(guī)則的key,但是redis提供了批量查詢一類key的命令keys或scan,沒有提供批量刪除某種規(guī)則key的命令。

image.png
使用keys+xargs實現批量刪除
./redis-cli keys a_* | xargs ./redis-cli del
就是用keys a_*查詢出所有匹配的key,通過xargs命令,將前面查詢出來的key作為后面redis的del命令的輸入,這樣就可以實現redis批量刪除鍵了。
使用keys+xargs實現批量刪除弊端
redis是單線程,如果redis包含了大量的鍵,執(zhí)行keys命令可能會造成redis阻塞,所以一般建議不要在生產環(huán)境下使用keys命令。如果非要遍歷鍵刪除的話,可以在以下三種情況使用:
(1)在一個不對外提供服務的Redis從節(jié)點上執(zhí)行,這樣不會阻塞到客戶端的請求,但是會影響到主從復制。
(2)如果確認鍵值總數確實比較少,可以執(zhí)行該命令。
(3)使用scan命令漸進式的遍歷所有鍵,可以有效防止阻塞。
使用scan+xargs批量刪除
./redis-cli -h 127.0.0.1 -p 6379 --scan --pattern 'a_*' | xargs ./redis-cli -h 127.0.0.1 -p 6379 del
xargs命令介紹
xargs 可以將管道或標準輸入(stdin)數據轉換成命令行參數,也能夠從文件的輸出中讀取數據。
xargs 是一個強有力的命令,它能夠捕獲一個命令的輸出,然后傳遞給另外一個命令。