You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何连接远程Redis服务并通过bash脚本执行命令

远程连接Redis执行指令的Bash实现方案

前置依赖

  • 本地边缘节点安装Redis客户端工具redis-cli,无需部署完整Redis服务:
    • Debian/Ubuntu系执行apt install redis-tools即可安装
    • CentOS/RHEL系执行yum install redis即可安装
    • Alpine系执行apk add redis-cli即可安装
  • 提前确认本地节点到Redis服务端的网络连通性,确保安全组、防火墙放通本地到Redis监听端口(默认6379)的TCP访问。

单命令直接执行方式

根据Redis部署的认证、架构模式不同,直接在bash里调用redis-cli就能执行任意远程指令:

  • 无密码单实例场景,执行格式为redis-cli -h <Redis服务IP> -p <Redis端口> <待执行指令>,比如执行全库清空:
    redis-cli -h 10.0.0.23 -p 6379 FLUSHALL
    
  • 配置了密码鉴权的单实例,加-a参数传入密码,密码含特殊字符时用单引号包裹:
    redis-cli -h 10.0.0.23 -p 6379 -a 'R3dis_p@ssw0rd' FLUSHDB
    
  • 开启ACL用户鉴权的实例,额外加--user参数指定认证用户名:
    redis-cli -h 10.0.0.23 -p 6379 --user ops_admin -a '对应账号密码' CONFIG GET maxmemory-policy
    
  • Redis集群模式部署时,加-c参数开启槽位自动跳转,避免执行key操作时返回MOVED错误:
    redis-cli -h 10.0.0.23 -p 6379 -c -a '集群密码' FLUSHALL
    
  • 安全要求较高的场景,把-a 密码替换为--askpass参数,执行时会交互式提示输入密码,避免密码出现在进程列表造成泄露。
  • 如果企业集群为了安全没有开放Redis远程监听端口,可以先建立SSH隧道转发端口,再本地连接转发端口操作:
    # 建立SSH隧道,将本地6379端口映射到远程服务器本地的6379端口
    ssh -L 6379:127.0.0.1:6379 ops@10.0.0.23 -Nf
    # 之后直接连接本地127.0.0.1:6379即可操作远程Redis
    redis-cli -h 127.0.0.1 -p 6379 FLUSHALL
    

通用执行脚本封装

可以把逻辑封装成可复用的bash脚本,支持传入任意Redis指令执行:

#!/bin/bash
# 远程Redis指令执行脚本
REDIS_HOST="10.0.0.23"
REDIS_PORT="6379"
REDIS_USER=""  # 未开启ACL则留空
REDIS_PASS=""  # 未设置密码则留空
IS_CLUSTER=0   # 集群模式改为1

if [ $# -eq 0 ];then
    echo "使用方式: $0 <Redis指令及参数>"
    echo "示例1: $0 PING"
    echo "示例2: $0 FLUSHALL"
    echo "示例3: $0 SET test_key test_value"
    exit 1
fi

CLI_PARAMS="-h $REDIS_HOST -p $REDIS_PORT"
[ -n "$REDIS_USER" ] && CLI_PARAMS="$CLI_PARAMS --user $REDIS_USER"
[ -n "$REDIS_PASS" ] && CLI_PARAMS="$CLI_PARAMS -a $REDIS_PASS"
[ $IS_CLUSTER -eq 1 ] && CLI_PARAMS="$CLI_PARAMS -c"
# 安全要求高可以替换上面密码行为 CLI_PARAMS="$CLI_PARAMS --askpass"

redis-cli $CLI_PARAMS $@

给脚本加执行权限后即可使用:

chmod +x redis_remote_exec.sh
# 执行flushall
./redis_remote_exec.sh FLUSHALL
# 查询key
./redis_remote_exec.sh GET test_key

注意事项

  • FLUSHALL、FLUSHDB属于高危不可逆操作,执行前务必先执行PING命令确认连接的是目标实例,避免误操作清空其他环境数据。
  • 多人共用的边缘节点不要把Redis密码硬编码在脚本中,建议从环境变量读取或者使用交互式输入密码,避免凭证泄露。
  • 执行返回Connection refused优先排查网络连通性、Redis监听地址配置;返回NOAUTH Authentication required检查认证参数是否正确;返回MOVED错误确认是否集群模式未加-c参数。

内容的提问来源于stack exchange,提问作者Hanan Choudry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:36:19