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的更多相关文章

  1. Linux下批量删除空文件

    Linux下批量删除空文件(大小等于0的文件)的方法 find . -name "*" -type f -size 0c | xargs -n 1 rm -f 用这个还能够删除指定 ...

  2. linux下批量删除文件

    1. 在linux批量删除多级目录下同一格式的文件,可采用find + exec命令组合: 如在删除old目录下的,所有子目录中,后缀为.l的文件方法为: find old -type f -name ...

  3. Redis批量删除KEY的方法

    Redis 中有删除单个 Key 的指令 DEL,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux 的 xargs 指令来完成这个动作. 代码如下: redis-cli keys “* ...

  4. Linux下批量管理工具pssh安装和使用

    Linux下批量管理工具pssh安装和使用 pssh工具包 安装:yum -y install pssh pssh:在多个主机上并行地运行命令 pscp:把文件并行地复制到多个主机上 prsync:通 ...

  5. redis 通配符 批量删除key

    Redis 中 DEL指令支持多个key作为参数进行删除 但不支持通配符,无法通过通配符批量删除key,不过我们可以借助 Linux 的管道和 xargs 指令来完成这个动作. 比如要删除所有以use ...

  6. [转帖]Linux下批量替换文件内容方法

    Linux下批量替换文件内容方法 https://www.cnblogs.com/fjping0606/p/4428850.html 刚才用到的命令 原作者写的挺好的记录一下 以后 用. 1:查找fi ...

  7. redis批量删除key 远程批量删除key

    一.遇到的问题 在开发的过程中,经常会遇到要批量删除某种规则的key,如缓存的课程数据“course-课程uid”,其中课程uid是变量,我们需要删除"course-*"这一类的数 ...

  8. linux下怎么删除名称带空格的文件

    linux下怎么删除名称带空格的文件-rm 'mysql bin.000005' 用引号把文件名括起来 某些情况下会出现名称带空格的文件, 如果想要删除的话,直接用rm mysql bin.00000 ...

  9. Redis:按照正则批量删除key

    Redis按照正则批量删除key redis目前还不支持批量删除key的命令,但是我们有时需要删除符合某个规则的keys,有两种方式: 1.使用redis-cli keys "test*&q ...

随机推荐

  1. 洛谷P1280 尼克的任务 题解 动态规划/最短路

    作者:zifeiy 标签:动态规划.最短路 题目链接:https://www.luogu.org/problem/P1280 题目大意: 有k个任务分布在第1至n这n个时间点,第i个任务的于第 \(P ...

  2. H3C 路由表查找规则(2)

  3. linux 使用 jiffies 计数器

    这个计数器和来读取它的实用函数位于 <linux/jiffies.h>, 尽管你会常常只是包含 <linux/sched.h>, 它会自动地将 jiffies.h 拉进来. 不 ...

  4. ASP.NET MVC4.0+EF+LINQ+bui+bootstrap+网站+角色权限管理系统(4)

    接下来就是菜单管理了,菜单分为两部分,一部分是菜单管理,另一部分是左边的树形菜单 数据库添加菜单表Menus USE [MVCSystem] GO /****** Object: Table [dbo ...

  5. Linux USB 和 sysfs

    由于单个 USB 物理设备的复杂性, 设备在 sysfs 中的表示也非常复杂. 物理 USB 设备 (通过 struct usb_device 表示)和单个 USB 接口(由 struct usb_i ...

  6. [板子]KMP

    KMP板子,你甚至可以用这个板子A掉luogu的3375 基础懒得说,要求一个Next数组. #include<cstdio> #include<algorithm> #inc ...

  7. 搭建个人/企业私有云盘-seafile

    一.安装依赖组件 安装前的准备工作安装 Seafile 服务器之前,请确认已安装以下软件MariaDB 或者 MySQL 服务器 (MariaDB 是 MySQL 的分支),python 2.7 (从 ...

  8. slim中的参数获取

    官方文档中对于get和post的参数有以下获取方式 $app->get('/', function (Request $req, Response $res, $args = []) { $my ...

  9. JSR303 数据检验

    原文:https://blog.csdn.net/qq_28867949/article/category/7370730 一.JSR-303简介 JSR-303 是 JAVA EE 6 中的一项子规 ...

  10. 使用Python完成SAP客户端的打开和系统登陆

    最近小爬一直思忖着如何将以前写的一些半自动化程序转为全自动化,这其中就涉及到SAP的打开和登录过程.我们都知道,SAP原生的“脚本录制和回放”功能是在用户进入到某一个SAP”用户指定系统“后才可以启用 ...