redis批量删除key的步骤

 更新时间:2020年09月09日 11:41:56   作者:tlanyan  
本文分享最新版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 sentinel节点如何修改密码

    Redis sentinel节点如何修改密码

    这篇文章主要介绍了Redis sentinel节点如何修改密码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Redis 布隆过滤器的原理和实践教程

    Redis 布隆过滤器的原理和实践教程

    布隆过滤器适用于需要快速判断一个元素是否可能存在于集合中的场景,例如网络爬虫中的去重、缓存中的数据判断等,这篇文章主要介绍了Redis 布隆过滤器的原理和实践,需要的朋友可以参考下
    2024-02-02
  • SpringBoot 开启Redis缓存及使用方法

    SpringBoot 开启Redis缓存及使用方法

    用redis做缓存,是因为redis有着很优秀的读写能力,在集群下可以保证数据的高可用,那么今天通过本文给大家讲解下SpringBoot使用Redis的缓存的方法,感兴趣的朋友一起看看吧
    2021-08-08
  • Redis慢查询的实现

    Redis慢查询的实现

    本文主要介绍了Redis慢查询的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • php安装redis扩展过程介绍

    php安装redis扩展过程介绍

    大家好,本篇文章主要讲的是php安装redis扩展过程介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Redis Sentinel服务配置流程(详解)

    Redis Sentinel服务配置流程(详解)

    下面小编就为大家带来一篇Redis Sentinel服务配置流程(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 浅谈Redis存储数据类型及存取值方法

    浅谈Redis存储数据类型及存取值方法

    这篇文章主要介绍了浅谈Redis存储数据类型及存取值方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Redis sentinel哨兵集群的实现步骤

    Redis sentinel哨兵集群的实现步骤

    本文主要介绍了Redis sentinel哨兵集群的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 查看redis占用内存的实现方法

    查看redis占用内存的实现方法

    这篇文章主要介绍了查看redis占用内存的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Redis分布式锁升级版RedLock及SpringBoot实现方法

    Redis分布式锁升级版RedLock及SpringBoot实现方法

    这篇文章主要介绍了Redis分布式锁升级版RedLock及SpringBoot实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02

最新评论