redis批量刪除key的步驟
由于誤用插件,某臺服務器上的redis實例存在數(shù)百萬無用的key。為了刪除無用數(shù)據(jù),上網(wǎng)查找redis批量刪除key的方法,發(fā)現(xiàn)使用過程中都有問題。經(jīng)過本人的研究,終于找到redis批量刪除key的正確用法。
本文分享最新版Redis批量刪除key的方法,希望能幫到遇到同樣問題的網(wǎng)友。
redis批量刪除key
網(wǎng)上許多文章和教程給出的redis批量刪除key命令是:
redis-cli KEYS "$PATTERN" | xargs redis-cli DEL
在本人的實踐中,這條命令存在兩個問題:
1.redis-cli KEYS "$PATTERN"的結果會出現(xiàn)編號,不是純粹的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,與預期不符合。
經(jīng)過一番研究,redis批量刪除key的正確命令是:
redis-cli --raw KEYS "$PATTERN" | xargs -I {} redis-cli DEL "{}"
重點有兩個,分別解決上述命令存在的問題:
- 使用 –raw 參數(shù),去掉結果編號;
- xargs使用占位符,刪除key時將整個結果傳過去,避免了空格問題。
改正后的命令在本人的情況下運行正常,就是刪除兩百多萬個key有點慢,花了半個多小時。
redis批量移動key
如果你知道有用key的模式,并且有用key數(shù)量很小,可以通過redis批量移動key,然后flushdb的方法快速刪除,效率比上文提到的批量刪除大量無用key高很多。
操作方法如下:
- 批量移動key:
redis-cli --raw KEYS "$PATTERN" | xargs -L1 -I{} redis-cli MOVE {} 1
,其中命令最后的1是備份數(shù)據(jù)庫的編號; - 清空當前數(shù)據(jù)庫:
redis-cli flushdb
; - 還原key:
redis-cli -n 1 --raw KEYS "$PATTERN" | xargs -L1 -I{} redis-cli MOVE {} 0
。
注意清空當前數(shù)據(jù)庫的命令是 flushdb
,不能用 flushall
。flushdb
和flushall
的區(qū)別是:flushdb
只會清空當前數(shù)據(jù)庫的數(shù)據(jù),而flushall
會清空當前redis實例的所有數(shù)據(jù)。
redis-cli參數(shù)
上述命令使用redis-cli
工具完成,在編號為0的默認數(shù)據(jù)庫上操作。對于需要密碼、遠程redis主機的情況,redis-cli
有如下有用參數(shù):
-n:操作的數(shù)據(jù)庫;
-a:redis數(shù)據(jù)庫密碼
-h:redis主機ip,通過-h可以遠程批量刪除key
-p:redis端口
更多參數(shù)請參考幫助文檔。
以上就是redis批量刪除key的步驟的詳細內(nèi)容,更多關于redis批量刪除key的資料請關注腳本之家其它相關文章!
相關文章
利用Redis統(tǒng)計網(wǎng)站在線活躍用戶的方法
Redis支持對String類型的value進行基于二進制位的置位操作。通過將一個用戶的id對應value上的一位,通過對活躍用戶對應的位進行置位,就能夠用一個value記錄所有活躍用戶的信息。下面這篇文章主要介紹了利用Redis統(tǒng)計網(wǎng)站在線活躍用戶的方法,需要的朋友可以參考。2017-01-01Redis Cluster Pipeline導致的死鎖問題解決
本文主要介紹了Redis Cluster Pipeline導致的死鎖問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-10-10淺談redis采用不同內(nèi)存分配器tcmalloc和jemalloc
下面小編就為大家?guī)硪黄獪\談redis采用不同內(nèi)存分配器tcmalloc和jemalloc。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12詳解redis腳本命令執(zhí)行問題(redis.call)
這篇文章主要介紹了redis腳本命令執(zhí)行問題(redis.call),分別介紹了redis-cli命令行中執(zhí)行及l(fā)inux命令行中執(zhí)行問題,本文給大家介紹的非常詳細,需要的朋友參考下吧2022-03-03