由于应用 bug 造成某些特定前缀的缓存出错,需要批量清理。
Redis 日常运维脚本 中的 redis-tools.sh 仅支持删除单个 key 和 全部清理,并未实现匹配特定前缀批量删除的功能。
批量删除 key1$ redis-cli --scan --pattern "party*" | xargs -L 1 redis-cli del变更记录* Version 0.0.2 2020/05/16 * 修正 inputYN 多次回车,导致参数丢失问题 * 修正 部分描述信息,调整格式等 * 增加 “批量删除 key,支持正则表达式” 方法 * Version 0.0.1 2020/04/26 * 创建 Redis 集群情况查询、key 查询、key 删除等功能脚本选项 1sh ${SCRIPT_NAME} [options] <value> ... 2 3 -h<value>, --host=<value> Redis IP,可设置默认值参数:HOST 4 -p<value>, --port=<value> Redis 端口,可设置默认值参数:PORT 5 -a<value>, --password=<value> Redis 密码,可设置默认值参数:PASSWORD 6 -c<value>, --cluster=<value> 集群相关命令,如:nodes, info 7 -k<pattern>, --keys=<pattern> 查询 key,支持正则表达式 8 -g<value>, --get=<value> 获取指定 key 的值 9 -d<value>, --del=<value> 删除指定 key,不支持正则表达式,原因:redis 的 del 命令不支持正则表达式 10 -b<pattern>, --bdel=<pattern> 批量删除 key,支持正则表达式 11 -f, --flushall 删除所有 key 12 --help 帮助信息 13 -v, --version 版本信息示例 1redis key示例数据格式: 2 "party::123" 3 "party::456" 4 51. 查询集群信息,使用默认参数 6sh redis-tools.sh -c info 7 82. 查询集群节点 9sh redis-tools.sh -h 127.0.0.1 -p 8001 -a password -c nodes 10 113. 查询 key,支持正则表达式 12sh redis-tools.sh -k "party::123" 13sh redis-tools.sh -k "party*" 14 154. 获取指定 key 值 16sh redis-tools.sh -g "party::123" 17 185. 删除指定 key,不支持正则表达式,原因:redis 的 del 命令不支持正则表达式 19sh redis-tools.sh -d "party::123" 20 216. 批量删除 key,支持正则表达式 22sh redis-tools.sh -b "party::123" 23sh redis-tools.sh -b "party*" 24 257. 删除所有 key 26sh redis-tools.sh -f脚本 1$ cat redis-tools.sh 2#!/bin/bash 3#================================================================ 4# HEADER 5#================================================================ 6# Filename redis-tools.sh 7# Revision 0.0.2 8# Date 2020/04/26 9# Author jiangliheng 10# Email jiang_liheng@163.com 11# Website https://jiangliheng.github.io/ 12# Description Redis 日常运维脚本 13# Copyright Copyright (c) jiangliheng 14# License GNU General Public License 15# 16#================================================================ 17# Version 0.0.2 2020/05/16 18# 修正 inputYN 多次回车,导致参数丢失问题 19# 修正 部分描述信息,调整格式等 20# 增加 “批量删除 key,支持正则表达式” 方法 21# 22# Version 0.0.1 2020/04/26 23# 创建 Redis 集群情况查询、key 查询、key 删除等功能脚本 24# 25#================================================================ 26#%名称(NAME) 27#% ${SCRIPT_NAME} - Redis 日常运维脚本 28#% 29#%概要(SYNOPSIS) 30#% sh ${SCRIPT_NAME} [options] <value> ... 31#% 32#%描述(DESCRIPTION) 33#% Redis 日常运维脚本 34#% 35#%选项(OPTIONS) 36#% -h<value>, --host=<value> Redis IP,可设置默认值参数:HOST 37#% -p<value>, --port=<value> Redis 端口,可设置默认值参数:PORT 38#% -a<value>, --password=<value> Redis 密码,可设置默认值参数:PASSWORD 39#% -c<value>, --cluster=<value> 集群相关命令,如:nodes, info 40#% -k<pattern>, --keys=<pattern> 查询 key,支持正则表达式 41#% -g<value>, --get=<value> 获取指定 key 的值 42#% -d<value>, --del=<value> 删除指定 key,不支持正则表达式,原因:redis 的 del 命令不支持正则表达式 43#% -b<pattern>, --bdel=<pattern> 批量删除 key,支持正则表达式 44#% -f, --flushall 删除所有 key 45#% --help 帮助信息 46#% -v, --version 版本信息 47#% 48#%示例(EXAMPLES) 49#% redis key示例数据格式: 50#% "party::123" 51#% "party::456" 52#% 53#% 1. 查询集群信息,使用默认参数 54#% sh ${SCRIPT_NAME} -c info 55#% 56#% 2. 查询集群节点 57#% sh ${SCRIPT_NAME} -h 127.0.0.1 -p 8001 -a password -c nodes 58#% 59#% 3. 查询 key,支持正则表达式 60#% sh ${SCRIPT_NAME} -k "party::123" 61#% sh ${SCRIPT_NAME} -k "party*" 62#% 63#% 4. 获取指定 key 值 64#% sh ${SCRIPT_NAME} -g "party::123" 65#% 66#% 5. 删除指定 key,不支持正则表达式,原因:redis 的 del 命令不支持正则表达式 67#% sh ${SCRIPT_NAME} -d "party::123" 68#% 69#% 6. 批量删除 key,支持正则表达式 70#% sh ${SCRIPT_NAME} -b "party::123" 71#% sh ${SCRIPT_NAME} -b "party*" 72#% 73#% 7. 删除所有 key 74#% sh ${SCRIPT_NAME} -f 75#% 76#================================================================ 77# END_OF_HEADER 78#================================================================ 79 80# header 总行数 81SCRIPT_HEADSIZE=$(head -200 "${0}" |grep -n "^# END_OF_HEADER" | cut -f1 -d:) 82# 脚本名称 83SCRIPT_NAME="$(basename "${0}")" 84# 版本 85VERSION="0.0.2" 86 87# 默认 host 88HOST=127.0.0.1 89# 默认 port 90PORT=8001 91# 默认 password 92PASSWORD=password 93 94# usage 95usage() { 96 head -"${SCRIPT_HEADSIZE:-99}" "${0}" 97 | grep -e "^#%" 98 | sed -e "s/^#%//g" -e "s/${SCRIPT_NAME}/${SCRIPT_NAME}/g" -e "s/${VERSION}/${VERSION}/g" 99} 100 101# redis-cli 方法 102cli() { 103 printf "