Redis批量刪除key的小技巧,你知道嗎?



在使用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:6379exit

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批量刪除鍵了。

推薦閱讀

1.Spring Boot 2.X 整合Redis
2.Spring Boot 2.X 如何優雅的解決跨域問題?
3.Spring Boot 2.X 集成spring session實現session共享
4.Spring條件注解@Conditional
5.SpringBoot 2.X從0到1實現郵件發送功能


限時領取免費Java相關資料,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高並發分布式、大數據、機器學習等技術。
關注下方公眾號即可免費領取:

Java碎碎念公眾號

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM