RedisCluster linux下批量删除 key
Redis Cluster linux下批量删除键
说明
使用时不支持传入参数 *, 如 redis_batch_del.sh *, 因为在linux下 会自动将 * 解析为当前目录下所有文件名, 目前还没有想到好的解决办法。
如果需要flushall 可以自行加入参数判断, 执行flushall。
代码
#!/usr/bin/env bash
#######################################################################################
#使用说明:
# 脚本需要设置 三个参数, 即:
# 1. redis_home, 注意, 最后没有 /
# 2. redis_password
# 3. redis_enable_port redis集群中任意可用节点的端口
# 参数设置完毕后, 执行脚本时, 可同时删除多个key, 匹配方式为 redis的 pattern.
# 多个参数之间以空格隔开.
# 在任意redisCluster的节点上执行即可
# 如 redis_batch_del.sh hello* hhh* *hhh*
#######################################################################################
redis_home='/opt/TDS/redis/'
#redis密码
redis_password='redis'
#redis 任意可用redis 服务端端口
redis_enable_port='7001'
#如果没有redis密码, 需要删除 -a $reis_password
master_info=(`$redis_home/src/redis-cli -c -a $redis_password -p $redis_enable_port cluster nodes |grep 'master'`)
address_array=()
#获取所有master节点
for item in ${master_info[@]}
do
if [[ $item =~ '@' ]]
then
echo '当前redis的 master 节点为:' $item
address_array[${#address_array[*]}]=$item
fi
done
#最终addresses 存储的为 ip port, 例 ${addresses[0]} 为 192.168.0.1 ${addresses[1]} 为 7001
addresses=()
for item in ${address_array[@]}
do
temp_split=(${item//@/ })
ip_port=${temp_split[0]}
temp_split=(${ip_port//:/ })
addresses[${#addresses[*]}]=${temp_split[0]}
addresses[${#addresses[*]}]=${temp_split[1]}
done
function del_key_with_pattern() {
local length=${#addresses[*]}
local index=0
while [ $index -lt $length ]
do
local port_index=`expr $index + 1`
#如果没有redis密码, 需要删除 -a $reis_password
local redis_command="$redis_home/src/redis-cli -a $redis_password -c -h ${addresses[${index}]} -p ${addresses[${port_index}]}"
#屏蔽错误信息.
$redis_command keys $1 2>/dev/null |xargs -i $redis_command del {} >/dev/null 2>&1
echo "清除节点: ${addresses[${index}]}:${addresses[${port_index}]} 的 $1 数据"
index=`expr $port_index + 1`
done
}
for item in "$@"
do
del_key_with_pattern $item
done
RedisCluster linux下批量删除 key的更多相关文章
- Linux下批量删除空文件
Linux下批量删除空文件(大小等于0的文件)的方法 find . -name "*" -type f -size 0c | xargs -n 1 rm -f 用这个还能够删除指定 ...
- linux下批量删除文件
1. 在linux批量删除多级目录下同一格式的文件,可采用find + exec命令组合: 如在删除old目录下的,所有子目录中,后缀为.l的文件方法为: find old -type f -name ...
- Redis批量删除KEY的方法
Redis 中有删除单个 Key 的指令 DEL,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux 的 xargs 指令来完成这个动作. 代码如下: redis-cli keys “* ...
- Linux下批量管理工具pssh安装和使用
Linux下批量管理工具pssh安装和使用 pssh工具包 安装:yum -y install pssh pssh:在多个主机上并行地运行命令 pscp:把文件并行地复制到多个主机上 prsync:通 ...
- redis 通配符 批量删除key
Redis 中 DEL指令支持多个key作为参数进行删除 但不支持通配符,无法通过通配符批量删除key,不过我们可以借助 Linux 的管道和 xargs 指令来完成这个动作. 比如要删除所有以use ...
- [转帖]Linux下批量替换文件内容方法
Linux下批量替换文件内容方法 https://www.cnblogs.com/fjping0606/p/4428850.html 刚才用到的命令 原作者写的挺好的记录一下 以后 用. 1:查找fi ...
- redis批量删除key 远程批量删除key
一.遇到的问题 在开发的过程中,经常会遇到要批量删除某种规则的key,如缓存的课程数据“course-课程uid”,其中课程uid是变量,我们需要删除"course-*"这一类的数 ...
- linux下怎么删除名称带空格的文件
linux下怎么删除名称带空格的文件-rm 'mysql bin.000005' 用引号把文件名括起来 某些情况下会出现名称带空格的文件, 如果想要删除的话,直接用rm mysql bin.00000 ...
- Redis:按照正则批量删除key
Redis按照正则批量删除key redis目前还不支持批量删除key的命令,但是我们有时需要删除符合某个规则的keys,有两种方式: 1.使用redis-cli keys "test*&q ...
随机推荐
- PHP 面试题三
1.nginx使用哪种网络协议? nginx是应用层 我觉得从下往上的话 传输层用的是tcp/ip 应用层用的是http fastcgi负责调度进程 2. <? echo 'hello tush ...
- [转]JavaWeb工程 目录结构
今天为此事纠结了一段时间. 以下是mavaen推荐的项目目录. ├── pom.xml └── src ├── main │ ├── java │ │ └── my ...
- 2018-11-8-WPF-获取下载内容长度
title author date CreateTime categories WPF 获取下载内容长度 lindexi 2018-11-08 20:18:15 +0800 2018-11-08 20 ...
- linux 安装一个中断处理
如果你想实际地"看到"产生的中断, 向硬件设备写不足够; 一个软件处理必须在系统中配 置. 如果 Linux 内核还没有被告知来期待你的中断, 它简单地确认并忽略它. 中断线是一个 ...
- 看到两道小学数学题,实在是解不动,用js写了一下
把一个自然数的约数(除去它本身)按照从小到大的顺序写在它的左边,可以得到一个多位数,比如6的约数是1,2,3,写成一个多位数是1236,假如这个多位数中,没有直复数字,那么我们你这个多位数是唯一的.请 ...
- JS异步解决方案
前言 异步最早的解决方案是回调函数,如ajax,事件的回调,setInterval/setTimeout中的回调.但是回调函数有回调地狱的问题; 为了解决回调地狱的问题,社区提出了Promise解决方 ...
- ASP.NET MVC4.0+EF+LINQ+bui+网站+角色权限管理系统(7)
今天将使用Simplemembership进行权限控制 我们使用mvc的AuthorizeAttribute来实现对Controller and Action权限控制 看如下标为红色的代码片段: // ...
- 2018-2-13-win10-uwp-判断设备类型
title author date CreateTime categories win10 uwp 判断设备类型 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 1 ...
- You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.
异常 You are using the runtime-only build of Vue where the template compiler is not available. Either ...
- Excel单元格的日常操作
通过右键选择插入来移动单元格 灵活的运用"整行" 与 "整列" 选中区域之后 通过点击区域边框进行移动 按住shift之后框会变成线 更容易拖动 按住ctrl拖 ...