• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    redis批量删除key的步骤

    由于误用插件,某台服务器上的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 "{}"

    重点有两个,分别解决上述命令存在的问题:

    1. 使用 –raw 参数,去掉结果编号;
    2. xargs使用占位符,删除key时将整个结果传过去,避免了空格问题。

    改正后的命令在本人的情况下运行正常,就是删除两百多万个key有点慢,花了半个多小时。

    redis批量移动key

    如果你知道有用key的模式,并且有用key数量很小,可以通过redis批量移动key,然后flushdb的方法快速删除,效率比上文提到的批量删除大量无用key高很多。

    操作方法如下:

    1. 批量移动key:redis-cli --raw KEYS "$PATTERN" | xargs -L1 -I{} redis-cli MOVE {} 1,其中命令最后的1是备份数据库的编号;
    2. 清空当前数据库:redis-cli flushdb
    3. 还原key:redis-cli -n 1 --raw KEYS "$PATTERN" | xargs -L1 -I{} redis-cli MOVE {} 0

    注意清空当前数据库的命令是 flushdb,不能用 flushallflushdbflushall的区别是:flushdb 只会清空当前数据库的数据,而flushall会清空当前redis实例的所有数据。

    redis-cli参数

    上述命令使用redis-cli工具完成,在编号为0的默认数据库上操作。对于需要密码、远程redis主机的情况,redis-cli有如下有用参数:

    -n:操作的数据库;

    -a:redis数据库密码

    -h:redis主机ip,通过-h可以远程批量删除key

    -p:redis端口

    更多参数请参考帮助文档。

    以上就是redis批量删除key的步骤的详细内容,更多关于redis批量删除key的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • 浅谈Redis的key和value大小限制
    • 基于redis key占用内存量分析
    • Java使用RedisTemplate模糊删除key操作
    • 解决spring中redistemplate不能用通配符keys查出相应Key的问题
    • spring boot+redis 监听过期Key的操作方法
    • Redis集群下过期key监听的实现代码
    • springBoot集成redis的key,value序列化的相关问题
    • Redis大key多key拆分实现方法解析
    上一篇:查看Redis内存信息的命令
    下一篇:Redis的Expire与Setex区别说明
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    redis批量删除key的步骤 redis,批量,删除,key,的,步骤,