按照前缀批量删除 Redis key 的 Bash 脚本

140 阅读1分钟
#!/bin/bash
# Redis 连接信息
redis_host="xx.xx.xx.xx"  # Redis 主机地址
redis_port=6379  # Redis 端口
redis_password="xxxxxxxxxx"  # Redis 密码,如果没有设置密码,将该行注释掉

# 要删除的 key 的前缀
key_prefix="xxxx"  

# 获取所有匹配指定前缀的 key
keys=$(redis-cli -h "$redis_host" -p "$redis_port" -a "$redis_password" -n 9 --scan --pattern "$key_prefix*")

if [ -z "$keys" ]; then
    echo "没有找到匹配的 key"
else
    echo "开始删除以 '$key_prefix' 为前缀的 key"
    echo "待删除的 key 列表:"
    echo "$keys"

    # 批量删除 key
    deleted_keys=0
    for key in $keys; do
        echo "正在删除 key: $key"
        redis-cli -h "$redis_host" -p "$redis_port" -a "$redis_password" -n 9 DEL "$key"
        deleted_keys=$((deleted_keys + 1))
    done

    echo "成功删除 $deleted_keys 个以 '$key_prefix' 为前缀的 key"
fi```