redis批量刪除的通常做法

redis批量刪除的通常做法:

redis-cli keys "blacklist*" | xargs redis-cli del

上面的命令在key的前后沒有空格時是可以的,但有空格就不行了:

$redis-cli keys "blacklist*"
1) "blacklist:12: 361942420@qq.com "

注意到361942420@qq.com前后都有一個空格

有空格的話,就要把key用雙引號括起來,像這樣是可以刪除的:

$redis-cli del "blacklist:12: 361942420@qq.com "

那批量的操作怎么做呢?

最后的解決辦法是,用引號括起來,為每一個key拼好一個命令:

$redis-cli keys "blacklist*" > keys.txt
$awk '$0="redis-cli del \""$0"\""' keys.txt > cmd.txt
$cat cmd.txt
redis-cli del "blacklist:12: 361942420@qq.com "

再執(zhí)行cmd.txt:

$chmod a+x cmd.txt
$./cmd.txt

最后要說的是,在key的前后引入的空格是一個失誤,實(shí)際上應(yīng)該trim一下

批量刪除Key
Redis 中有刪除單個 Key 的指令 DEL,但好像沒有批量刪除 Key 的指令,不過我們可以借助 Linux 的 xargs 指令來完成這個動作

redis-cli -h ip -p port keys "*"| xargs redis-cli -h ip -p port del

//如果redis-cli沒有設(shè)置成系統(tǒng)變量,需要指定redis-cli的完整路徑

//如:/opt/redis/redis-cli
 keys "*" | xargs /opt/redis/redis-cli del

如果要指定 Redis 數(shù)據(jù)庫訪問密碼,使用下面的命令

redis-cli
-h ip -p port -a password keys "*"|
 xargs redis-cli
-h ip -p port -a password del

如果要訪問 Redis 中特定的數(shù)據(jù)庫,使用下面的命令

//下面的命令指定數(shù)據(jù)序號為0,即默認(rèn)數(shù)據(jù)庫

redis-cli

-h ip -p port -n 0 keys "*"|
 xargs redis-cli
-h ip -p port -n 0 del

刪除所有Key

刪除所有Key,可以使用Redis的flushdb和flushall命令

//刪除當(dāng)前數(shù)據(jù)庫中的所有Key

flushdb

//刪除所有數(shù)據(jù)庫中的key

flushall

注:keys 指令可以進(jìn)行模糊匹配,但如果 Key 含空格,就匹配不到了,暫時還沒發(fā)現(xiàn)好的解決辦法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容