由于誤用插件,某臺(tái)服務(wù)器上的redis實(shí)例存在數(shù)百萬(wàn)無(wú)用的key。為了刪除無(wú)用數(shù)據(jù),上網(wǎng)查找redis批量刪除key的方法,發(fā)現(xiàn)使用過(guò)程中都有問(wèn)題。經(jīng)過(guò)本人的研究,終于找到redis批量刪除key的正確用法。
本文分享最新版Redis批量刪除key的方法,希望能幫到遇到同樣問(wèn)題的網(wǎng)友。
redis批量刪除key
網(wǎng)上許多文章和教程給出的redis批量刪除key命令是:
redis-cli KEYS "$PATTERN" | xargs redis-cli DEL
在本人的實(shí)踐中,這條命令存在兩個(gè)問(wèn)題:
1.redis-cli KEYS "$PATTERN"的結(jié)果會(huì)出現(xiàn)編號(hào),不是純粹的key列表,如下所示:
[root@node1]# redis-cli keys "*"1) ":default:is_blog_installed"2) ":site-options:1-notoptions"
本人用的是Redis 5版本,未測(cè)試低版本Redis是否也會(huì)添加1),2)這樣的編號(hào)??梢韵氲剑?yàn)榫幪?hào)的存在,管道后DEL刪除的是錯(cuò)誤的key;
2.如果key存在空格,管道后面的DEL將無(wú)法正確刪除。例如key是”123 4566″,傳送到管道后面刪除,就變成了刪除兩個(gè)key,與預(yù)期不符合。
經(jīng)過(guò)一番研究,redis批量刪除key的正確命令是:
redis-cli --raw KEYS "$PATTERN" | xargs -I {} redis-cli DEL "{}"
重點(diǎn)有兩個(gè),分別解決上述命令存在的問(wèn)題: