redis批量刪除key的步驟

2022-09-21 10:21:07 字數 1261 閱讀 9528

由於誤用外掛程式,某台伺服器上的redis例項存在數百萬無用的key。為了刪除無用資料,上網查詢redis批量刪除key的方法,發現使用過程中都有問題。經過本人的研究,終於找到redis批量刪除key的正確用法。

本文分享最新版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 "{}"

重點有兩個,分別解決上述命令存在的問題:

改正後的ahkdrwsaex命令在本人的情況下執行正常,就是刪除兩百多萬個key有點慢,花了半個多小時。

redis批量移動key

如果你知道有用key的模式,並且有用key數量很小,可以通過redis批量移動key,然後flushdb的方法快速刪除,效率比上文提到的批量刪除大量無用key高很多。

操作方法如下:

注意清空當前資料庫的命令是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

批量刪除key redis 中有刪除單個 key 的指令 del,但好像沒有批量刪除 key 的指令,不過我們可以借助 linux 的 xargs 指令來完成這個動作 redis cli keys xargs redis cli del 如果redis cli沒有設定成系統變數,需要指定redis ...

redis批量刪除key

前言 redis本身命令不提供批量刪除,但通過linux連線redis,結合redis和linux相關命令實現批量刪除。例 刪除 以employeeinfo開頭的所有資料 1.1 redis為預設埠號6379,無連線密碼,刪除命令如下 redis cli keys employeeinfo xarg...

redis批量刪除key

因redis本身不支援萬用字元批量刪除key,所以需要借助linux xargs 命令,把乙個命令獲取到的結果,通過管道方式當做另外乙個命令的入參,來實現批量刪除key redis cli h ip p 埠 a 密碼 n 資料庫 keys 需要刪除的字首 xargs redis cli a 密碼 n...