您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關利用redis如何實現批量刪除key,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
redis批量刪除key
redis批量刪除key命令是:
redis-cli KEYS "$PATTERN" | xargs redis-cli DEL
在本人的實踐中,這條命令存在兩個問題:
1.redis-cli KEYS "$PATTERN"的結果會出現編號,不是純粹的key列表,如下所示:
[root@node1]# redis-cli keys "*" 1) ":default:is_blog_installed" 2) ":site-options:1-notoptions"
本人用的是Redis 5版本,未測試低版本Redis是否也會添加1),2)這樣的編號。可以想到,因為編號的存在,管道后DEL刪除的是錯誤的key;
2.如果key存在空格,管道后面的DEL將無法正確刪除。例如key是”123 4566″,傳送到管道后面刪除,就變成了刪除兩個key,與預期不符合。
經過一番研究,redis批量刪除key的正確命令是:
redis-cli --raw KEYS "$PATTERN" | xargs -I {} redis-cli DEL "{}"
重點有兩個,分別解決上述命令存在的問題:
改正后的命令在本人的情況下運行正常,就是刪除兩百多萬個key有點慢,花了半個多小時。
redis批量移動key
如果你知道有用key的模式,并且有用key數量很小,可以通過redis批量移動key,然后flushdb的方法快速刪除,效率比上文提到的批量刪除大量無用key高很多。
操作方法如下:
redis-cli --raw KEYS "$PATTERN" | xargs -L1 -I{} redis-cli MOVE {} 1
,其中命令最后的1是備份數據庫的編號;redis-cli flushdb
;redis-cli -n 1 --raw KEYS "$PATTERN" | xargs -L1 -I{} redis-cli MOVE {} 0
。注意清空當前數據庫的命令是 flushdb
,不能用 flushall
。flushdb
和flushall
的區別是:flushdb
只會清空當前數據庫的數據,而flushall
會清空當前redis實例的所有數據。
redis-cli參數
上述命令使用redis-cli
工具完成,在編號為0的默認數據庫上操作。對于需要密碼、遠程redis主機的情況,redis-cli
有如下有用參數:
-n:操作的數據庫;
-a:redis數據庫密碼
-h:redis主機ip,通過-h可以遠程批量刪除key
-p:redis端口
上述就是小編為大家分享的利用redis如何實現批量刪除key了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。