这期内容当中小编将会给大家带来有关利用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 "{}"
重点有两个,分别解决上述命令存在的问题:
改正后的命令在本人的情况下运行正常,就是删除两百多万个key有点慢,花了半个多小时。
redis批量移动key
如果你知道有用key的模式,并且有用key数量很小,可以通过redis批量移动key,然后flushdb的方法快速删除,效率比上文提到的批量删除大量无用key高很多。
操作方法如下:
redis-cli --raw KEYS "$PATTERN" | xargs -L1 -I{} redis-cli MOVE {} 1
,其中命令最后的1是备份数据库的编号;redis-cli flushdb
;redis-cli -n 1 --raw KEYS "$PATTERN" | xargs -L1 -I{} redis-cli MOVE {} 0
。注意清空当前数据库的命令是 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了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。