在使用redis的過程中,經常會遇到要批量刪除某種規則的key,但是redis提供了批量查詢一類key的命令keys或scan,沒有提供批量刪除某種規則key的命令,怎么辦?看完本文即可,哈哈。
本文目錄
一、使用keys+xargs實現
1.連接redis,初始數據
2.使用keys命令查看數據
3.退出redis的客戶端
4.使用keys+xargs批量刪除
5.注意事項
二、使用scan+xargs實現
1.使用scan+xargs批量刪除
三、xargs命令介紹
一、使用keys+xargs實現
開始實戰
1.連接redis,初始數據
./redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> set JAVA_suisui_1 1 OK 127.0.0.1:6379> set java_suisui_2 2 OK 127.0.0.1:6379> set java_suisui_3 3 OK 127.0.0.1:6379> set java_suisui_4 4 OK
2.使用keys命令查看數據
127.0.0.1:6379> keys java_suisui_* 1) "java_suisui_1" 2) "java_suisui_2" 3) "java_suisui_3" 4) "java_suisui_4"
3.退出redis的客戶端
127.0.0.1:6379> exit
4.使用keys+xargs批量刪除
[root@node1 src]# ./redis-cli -h 127.0.0.1 -p 6379 keys "java_suisui*" | xargs ./redis-cli -h 127.0.0.1 -p 6379 del (integer) 4
執行上述命令后4條記錄全部刪除。
5.注意事項
redis是單線程架構,如果redis包含了大量的鍵,執行keys命令可能會造成redis阻塞,所以一般建議不要在生產環境下使用keys命令。如果非要遍歷鍵刪除的話,可以在以下三種情況使用:
(1).在一個不對外提供服務的Redis從節點上執行,這樣不會阻塞到客戶端的請求,但是會影響到主從復制。
(2).如果確認鍵值總數確實比較少,可以執行該命令。
(3).使用scan命令漸進式的遍歷所有鍵,可以有效防止阻塞。
二、使用scan+xargs實現
開始實戰,前三個步驟和上面一樣,不再重復記錄。
1.使用scan+xargs批量刪除
[root@node1 src]# ./redis-cli -h 127.0.0.1 -p 6379 --scan --pattern 'java*' | xargs ./redis-cli -h 127.0.0.1 -p 6379 del (integer) 4
執行上述命令后4條記錄全部刪除。
三、xargs命令介紹
xargs 可以將管道或標準輸入(stdin)數據轉換成命令行參數,也能夠從文件的輸出中讀取數據。
xargs 是一個強有力的命令,它能夠捕獲一個命令的輸出,然后傳遞給另外一個命令。
./redis-cli -h 127.0.0.1 -p 6379 keys "java_suisui*" | xargs ./redis-cli -h 127.0.0.1 -p 6379 del
上述命令解釋:
就是用keys java_suisui*查詢出所有匹配的key,通過xargs命令,將前面查詢出來的key作為后面redis的del命令的輸入,這樣就可以實現redis批量刪除鍵了。
原文:https://www.cnblogs.com/haha12/p/11327906.html