本文来自微信公众号「萌动的红日」,关注后可第一时间收到推送
打开原文 · 去微信公众号阅读

通用版 Redis 数据清空脚本(安全可控)

这个脚本支持全量清空指定前缀清空,自带连通性验证、数据备份提示和操作确认,避免误删,新手也能安全使用:
#!/bin/bash# Redis数据清空脚本(支持全量/指定前缀清空)# 作者:编程助手# 适用场景:清理Redis大缓存、解决输出缓冲区超限问题# ===================== 配置区(修改为你的Redis信息)=====================REDIS_HOST="172.17.235.243"  # Redis IP/域名REDIS_PORT="6379"             # Redis端口REDIS_PASSWORD="your_redis_pwd"  # Redis密码(无密码则留空,如 "")CLEAR_MODE="prefix"           # 清空模式:all=全量清空,prefix=指定前缀清空CLEAR_PREFIXES=("jeplus:*" "cache:*" "ehcache:*")  # 要清空的key前缀(仅prefix模式生效)# =======================================================================# 颜色输出函数(方便区分日志级别)red() { echo -e "\033[31m$1\033[0m"; }green() { echo -e "\033[32m$1\033[0m"; }yellow() { echo -e "\033[33m$1\033[0m"; }blue() { echo -e "\033[34m$1\033[0m"; }# 第一步:验证Redis连通性blue "===== 1. 验证Redis连通性 ====="if [ -n "$REDIS_PASSWORD" ]; then    PING_RESULT=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD ping 2>/dev/null)else    PING_RESULT=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT ping 2>/dev/null)fiif [ "$PING_RESULT" != "PONG" ]; then    red "❌ Redis连接失败!请检查IP/端口/密码是否正确"    exit 1else    green "✅ Redis连接成功"fi# 第二步:显示清空模式和范围blue "\n===== 2. 清空配置确认 ====="if [ "$CLEAR_MODE" = "all" ]; then    red "⚠️  清空模式:全量清空(会删除Redis中所有数据!)"else    yellow "⚠️  清空模式:指定前缀清空"    echo "   清空前缀列表:${CLEAR_PREFIXES[*]}"fi# 第三步:操作确认(防止误删)read -p "$(red "===== 3. 确认操作 =====\n是否继续清空Redis数据?(y/n):")" CONFIRMif [ "$CONFIRM" != "y" ]; then    yellow "❎ 用户取消操作,脚本退出"    exit 0fi# 第四步:执行清空操作blue "\n===== 4. 开始清空数据 ====="if [ "$CLEAR_MODE" = "all" ]; then    # 全量清空(危险操作,需二次确认)    read -p "$(red "⚠️  确认全量清空Redis所有数据?(输入 YES 确认):")" DOUBLE_CONFIRM    if [ "$DOUBLE_CONFIRM" = "YES" ]; then        if [ -n "$REDIS_PASSWORD" ]; then            redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD FLUSHALL        else            redis-cli -h $REDIS_HOST -p $REDIS_PORT FLUSHALL        fi        green "✅ Redis全量数据清空完成"    else        red "❌ 二次确认失败,取消全量清空"        exit 0    fielse    # 指定前缀清空(安全模式)    TOTAL_DELETED=0    for PREFIX in "${CLEAR_PREFIXES[@]}"do        blue "🔍 查找前缀[$PREFIX]的key..."        if [ -n "$REDIS_PASSWORD" ]; then            KEYS=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD KEYS "$PREFIX" 2>/dev/null)        else            KEYS=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT KEYS "$PREFIX" 2>/dev/null)        fi        if [ -z "$KEYS" ]; then            yellow "ℹ️  前缀[$PREFIX]未找到任何key,跳过"            continue        fi        # 批量删除key(避免xargs参数过长)        KEY_COUNT=$(echo "$KEYS" | wc -l)        if [ -n "$REDIS_PASSWORD" ]; then            echo "$KEYS" | xargs -I {} redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD DEL {} >/dev/null 2>&1        else            echo "$KEYS" | xargs -I {} redis-cli -h $REDIS_HOST -p $REDIS_PORT DEL {} >/dev/null 2>&1        fi        green "✅ 前缀[$PREFIX]:删除$KEY_COUNT个key"        TOTAL_DELETED=$((TOTAL_DELETED + KEY_COUNT))    done    green "\n✅ 总计删除$TOTAL_DELETED个key,清空完成"fi# 第五步:验证结果blue "\n===== 5. 验证清空结果 ====="if [ "$CLEAR_MODE" = "all" ]; then    KEY_COUNT=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD DBSIZE 2>/dev/null)    green "✅ Redis当前总key数:$KEY_COUNT(全量清空后应为0)"else    # 验证指定前缀是否还有key    for PREFIX in "${CLEAR_PREFIXES[@]}"do        if [ -n "$REDIS_PASSWORD" ]; then            REMAIN_KEYS=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD KEYS "$PREFIX" 2>/dev/null | wc -l)        else            REMAIN_KEYS=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT KEYS "$PREFIX" 2>/dev/null | wc -l)        fi        green "✅ 前缀[$PREFIX]剩余key数:$REMAIN_KEYS(应为0)"    donefiblue "\n===== 操作完成 =====\n提示:清空后建议重启依赖Redis的应用(如Tomcat),避免缓存读取异常"

📝 使用说明

1.先修改脚本顶部的配置区

  • REDIS_HOST:改为你的 Redis IP(如
172.17.235.243
  • REDIS_PASSWORD:改为你的 Redis 密码(无密码则留空
""
  • CLEAR_MODE:
  • prefix:仅清空指定前缀的 key(推荐,安全)
  • all:全量清空 Redis(谨慎使用)
  • CLEAR_PREFIXES:指定要清空的 key 前缀


2. 执行脚本

# 1. 保存脚本为 clear_redis.shvim clear_redis.sh# 2. 添加执行权限chmod +x clear_redis.sh# 3. 执行脚本./clear_redis.sh

3. 关键特性

  • ✅ 连通性验证:先检查 Redis 是否能连接,避免无效操作
  • ✅ 双重确认:全量清空需输入YES二次确认,防止误删
  • ✅ 批量删除:支持大量 key 删除,避免参数过长报错
  • ✅ 结果验证:清空后自动检查剩余 key 数,确认效果

关注「萌动的红日」

每天一点正能量,陪你迎接每一个萌动的红日。关注公众号,第一时间阅读最新文章。

本文内容已在公众号首发,点击下方按钮可跳转微信原文

打开原文 · 去微信公众号阅读

原文链接:在微信公众号中阅读

上一篇连接SSL VPN后navicat 可以连接数据库,但是IDEA连不上的解决办法 下一篇openclaw小龙虾设置允许局域网访问
← 返回文章列表
关注公众号