当前位置:首页 > 问答 > 正文

Redis远程连接怎么弄?一步步教你搞定远程访问和配置问题

Redis为了安全起见,默认设置是只允许本机访问,也就是只有安装Redis的那台电脑自己才能连接上,这就像是你的家门,默认只从里面反锁,外面的人用钥匙也打不开,我们要做的就是把“门”打开,并告诉Redis允许来自网络的连接。

这个过程主要分为两大步:第一步是在Redis服务器上进行配置,第二步是在你的本地电脑或应用程序中进行连接,下面我们一步步来。

第一步:在服务器上配置Redis(关键步骤)

这一步是所有操作的基础,如果这里没配好,后面怎么连都是失败的,你需要有权限去修改服务器上的Redis配置文件。

  1. 找到配置文件: Redis的配置文件通常名字叫 redis.conf,它所在的位置因你的安装方式不同而不同。

    Redis远程连接怎么弄?一步步教你搞定远程访问和配置问题

    • 如果你是Linux系统通过包管理器(比如apt-get或yum)安装的,它可能在 /etc/redis/redis.conf
    • 如果你是手动编译安装的,它可能在Redis解压目录的根目录下。
    • 如果找不到,可以用命令 find / -name redis.conf 来搜索。
  2. 备份配置文件(好习惯): 在修改任何重要配置之前,先备份总是一个好习惯,你可以执行命令:cp /etc/redis/redis.conf /etc/redis/redis.conf.bak,这样万一改错了,还能恢复。

  3. 修改关键配置: 用你熟悉的文本编辑器(如vim、nano)打开 redis.conf 文件,我们需要修改两个最重要的设置。

    • 绑定IP(最关键的设置): 找到一行叫做 bind 的配置,默认它可能是 bind 127.0.0.1 或者 bind 127.0.0.1 ::1,这行配置的意思是只允许本机IPv4和IPv6的回环地址连接。 你要做的是:

      • 方法一(允许任何IP连接,不太安全但简单):直接将这一行注释掉,在行首加一个 号,变成 # bind 127.0.0.1 ::1
      • 方法二(推荐,更安全):将IP改为 0.0.0,意思是允许所有网络接口的连接,即 bind 0.0.0.0,或者,你也可以绑定服务器具体的公网IP地址。
    • 关闭保护模式: 找到 protected-mode 这个配置项,默认是 yes,当没有设置密码且bind选项没有指定其他IP时,保护模式会生效,拒绝外部连接,因为我们修改了bind,但为了确保万一,最好把它设为 no,即 protected-mode no

      Redis远程连接怎么弄?一步步教你搞定远程访问和配置问题

    • 设置访问密码(强烈建议): 允许远程连接后,安全风险大大增加,所以设置一个密码是非常必要的,找到 requirepass 配置项,默认是被注释的,你取消注释,并在后面设置一个强密码,requirepass YourSuperStrongPassword123!,请务必把这个密码记好。

  4. 重启Redis服务: 修改完配置后,必须重启Redis服务才能使新配置生效,根据你的操作系统,重启命令可能不同。

    • 对于使用systemd的系统(如CentOS 7+, Ubuntu 16.04+):sudo systemctl restart redissudo systemctl restart redis-server
    • 对于使用init.d的老系统:sudo service redis-server restart
  5. 开放服务器防火墙端口: Redis默认使用6379端口,你需要在服务器的防火墙规则中开放这个端口。

    • 如果使用iptables:sudo iptables -A INPUT -p tcp --dport 6379 -j ACCEPT,然后保存规则。
    • 如果使用firewalld(CentOS/RHEL):sudo firewall-cmd --permanent --add-port=6379/tcpsudo firewall-cmd --reload
    • 如果使用云服务器(如阿里云、腾讯云),你还需要登录云服务商的管理控制台,在安全组规则中添加入站规则,允许6379端口。

第二步:在本地进行连接测试

Redis远程连接怎么弄?一步步教你搞定远程访问和配置问题

服务器端配置好后,你就可以在本地电脑上尝试连接了。

  1. 使用Redis命令行客户端连接: 如果你本地也安装了Redis,可以在终端或命令提示符中使用 redis-cli 命令连接。 连接命令是:redis-cli -h your_server_ip -p 6379 -a YourSuperStrongPassword123!

    • -h 后面填你的服务器公网IP地址。
    • -p 后面是端口,默认6379,如果没改就不用动。
    • -a 后面就是你刚才设置的密码。 如果连接成功,你会看到命令提示符变成 your_server_ip:6379>,这时你可以试一下 ping 命令,如果返回 PONG,那就恭喜你,连接成功了!
  2. 在程序代码中连接: 在你的应用程序中连接方式也类似,只是语法因编程语言而异,核心要素同样是:主机IP、端口、密码。

    • Python(使用redis-py库)示例
      import redis
      r = redis.Redis(host='your_server_ip', port=6379, password='YourSuperStrongPassword123!', decode_responses=True)
      r.set('foo', 'bar')
      value = r.get('foo')
      print(value) # 会输出 'bar'
    • Java(使用Jedis库)示例
      Jedis jedis = new Jedis("your_server_ip", 6379);
      jedis.auth("YourSuperStrongPassword123!");
      jedis.set("foo", "bar");
      String value = jedis.get("foo");
      System.out.println(value); // 会输出 "bar"

可能遇到的问题和排查方法

  • 连接被拒绝:检查服务器防火墙和云服务商安全组是否真的开放了6379端口,可以用 telnet your_server_ip 6379 命令测试端口通不通。
  • 认证失败:百分百确认密码是否正确,是否在配置文件中设置成功,重启Redis服务了吗?
  • 还是连不上:回头再仔细检查 redis.conf 文件,bindprotected-mode 这两个设置是否严格按照上面的要求改了。

就是配置Redis远程连接的全部核心步骤,安全第一,密码一定要设得复杂一些,并且定期更换,如果只是临时测试,用完后记得把配置改回去或者关闭防火墙端口。