redis 批量删除key

网上搜索,一般三种方法:

一.使用命令行批量删除redis的key
二.使用图形界面工具RedisDesktopManager
三.使用jedis批量删除keys

今天记录第一种方式(命令行批量删除)删除

测试环境,数据量2百多万

1.ssh登录redis服务器(root)

cd /opt/redis/ (redis安装目录,自行修改)

2. ./redis-cli -h host -p 6379 keys 'CL*' | xargs -0 ./redis-cli -h host -p 6379 del

语句含义:删除以CL前缀开头的key 但是非常遗憾,因为这个key有特殊字符,删除报错:

xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option

eg:这两种格式的key有特殊字符,删除不掉,导致上面语句报错

CL_DETAIL_NAME_В'ячеслав Степанович Тімченко_SET

CL_DETAIL_NAME_北京多氪信息科技有限公司(krkr)_SET

3.将./redis-cli -h host -p 6379 keys 'CL*' > xn.sh

语句含义:将CL开头的key导入文件xn.sh

vim xn.sh

:%s/^/" (key左边加双引号)

:%s/$/" (key又边加双引号)

:%s/^/.\/redis-cli -h host -p 6379 DEL /g

:wq!

4. 查看xn.sh,每行语句格式变成这样即可  ./redis-cli -h host -p 6379 del "CL_DETAIL_NAME_埃利特航空科技(河北)有限公司_SET"  

5.chmod +x xn.sh   

语句含义:变成可执行文件

6. ./xn.sh

语句含义:执行可执行文件

shell端显示

(integer) 1
(integer) 1
(integer) 1
(integer) 1
(integer) 1
(integer) 1
(integer) 1
(integer) 1
(integer) 1
(integer) 1
(integer) 1
(integer) 1
 

完成!

同事解决方式,效率高:/opt/redis/bin/redis-cli -c --raw -a ecBskzn10akf --no-auth-warning -p 6001 -h host keys CL_*_SET|sed  's/^/del "/g;s/$/"/g'|/opt/redis/bin/redis-cli -c --raw -a ecBskzn10akf --no-auth-warning -p 6001 -h host --pipe

解决问题过程中学到的命令:

1.vim

vim 模式中,查看总行数

:set number

shift+g 调到最后一行就是总条数

vim +行号 文件名

2.xargs

xargs,是一个在Linux系统中比较常用的一个命令,它可以将标准输入的每行中的字符串拼成一个命令行,并执行它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值