linux redis删除表,REDIS借助Linux的xargs实现批量删除key

redis这个东西,挺有用的,但有时候存入了错误的key,还沙雕的没有设置过期时间的时候,尤其是当你存了好多,然后想去处理的时候,才发现这玩意好难用。总结了下批量删除的方法。

那么什么是xargs呢,网上给出的解释如下

xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。

xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。

xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令

xargs 一般是和管道一起使用。

命令格式:

somecommand|xargs-item command

简单来说,就是|左边的命令执行的结果,传递给右边xargs后的命令,所以可以用这个方法来操作redis,先用keys 方法模糊查询出相关的key,然后传入del进行删除,思路有了,具体实现就是这样子:

$connect = "redis-cli -h '{$host}' -p {$port} -n {$db} -a '{$auth}'";

$command = " {$connect} keys '*{$key}*' | xargs --no-run-if-empty {$connect} del";

如此便可以删除想要删除的所有key

/**

* @param string $key

* @param string $type

* @return array

* 批量删除 redis_key

* 确保服务器已安装redis

*/

public static function rmRedisKeys($key='',$type='core'){

if(empty($key)){

return ['exec'=>0, 'command'=>'key不能为空'];

}

if(strpos($key,'*') !== false){

return ['exec'=>0, 'command'=>'禁止匹配所有key'];

}

$type = strval($type);

$config_key = "redis_{$type}";//省略redis_前缀

$redis_config = CUtil::getConfig($config_key,'common',\Yii::$app->id);

$auth = $redis_config['password'];

$db = $redis_config['database'];

$host = $redis_config['hostname'];

$port = $redis_config['port'];

$connect = "redis-cli -h '{$host}' -p {$port} -n {$db} -a '{$auth}'";

$command = " {$connect} keys '*{$key}*' | xargs --no-run-if-empty {$connect} del";

if(empty($auth)){

$command = str_replace("-a '{$auth}'",'',$command);

}

exec($command,$output);

return ['exec'=> $output, 'command'=>$command];

}

看看以下链接的内容,基本就搞懂xargs的用法了

linux xargs

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值