主頁 > 知識庫 > redis批量刪除key的步驟

redis批量刪除key的步驟

熱門標(biāo)簽:地圖標(biāo)注工廠入駐 一個地圖標(biāo)注多少錢 400電話辦理的口碑 臺灣電銷 高碑店市地圖標(biāo)注app 廊坊外呼系統(tǒng)在哪買 b2b外呼系統(tǒng) 四川穩(wěn)定外呼系統(tǒng)軟件 南京手機(jī)外呼系統(tǒng)廠家

由于誤用插件,某臺服務(wù)器上的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"的結(jié)果會出現(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,與預(yù)期不符合。

經(jīng)過一番研究,redis批量刪除key的正確命令是:

redis-cli --raw KEYS "$PATTERN" | xargs -I {} redis-cli DEL "{}"

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

  1. 使用 –raw 參數(shù),去掉結(jié)果編號;
  2. xargs使用占位符,刪除key時將整個結(jié)果傳過去,避免了空格問題。

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

redis批量移動key

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

操作方法如下:

  1. 批量移動key:redis-cli --raw KEYS "$PATTERN" | xargs -L1 -I{} redis-cli MOVE {} 1,其中命令最后的1是備份數(shù)據(jù)庫的編號;
  2. 清空當(dāng)前數(shù)據(jù)庫:redis-cli flushdb
  3. 還原key:redis-cli -n 1 --raw KEYS "$PATTERN" | xargs -L1 -I{} redis-cli MOVE {} 0。

注意清空當(dāng)前數(shù)據(jù)庫的命令是 flushdb,不能用 flushall。flushdbflushall的區(qū)別是:flushdb 只會清空當(dāng)前數(shù)據(jù)庫的數(shù)據(jù),而flushall會清空當(dāng)前redis實例的所有數(shù)據(jù)。

redis-cli參數(shù)

上述命令使用redis-cli工具完成,在編號為0的默認(rèn)數(shù)據(jù)庫上操作。對于需要密碼、遠(yuǎn)程redis主機(jī)的情況,redis-cli有如下有用參數(shù):

-n:操作的數(shù)據(jù)庫;

-a:redis數(shù)據(jù)庫密碼

-h:redis主機(jī)ip,通過-h可以遠(yuǎn)程批量刪除key

-p:redis端口

更多參數(shù)請參考幫助文檔。

以上就是redis批量刪除key的步驟的詳細(xì)內(nèi)容,更多關(guān)于redis批量刪除key的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 淺談Redis的key和value大小限制
  • 基于redis key占用內(nèi)存量分析
  • Java使用RedisTemplate模糊刪除key操作
  • 解決spring中redistemplate不能用通配符keys查出相應(yīng)Key的問題
  • spring boot+redis 監(jiān)聽過期Key的操作方法
  • Redis集群下過期key監(jiān)聽的實現(xiàn)代碼
  • springBoot集成redis的key,value序列化的相關(guān)問題
  • Redis大key多key拆分實現(xiàn)方法解析

標(biāo)簽:定州 拉薩 河源 畢節(jié) 甘南 伊春 南寧 泰州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《redis批量刪除key的步驟》,本文關(guān)鍵詞  redis,批量,刪除,key,的,步驟,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《redis批量刪除key的步驟》相關(guān)的同類信息!
  • 本頁收集關(guān)于redis批量刪除key的步驟的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章