Node.js使用redis包连接Redis报ECONNREFUSED,服务正常防火墙已放行如何解决
问题原因
- 核心错误为端口号输入笔误:Redis默认监听端口为
6379,你的Node连接代码、ufw防火墙放行规则中均错误填写为6739,导致请求指向了未被Redis监听的端口,触发连接拒绝报错。你本地执行redis-cli ping能正常返回PONG,也侧面验证了Redis实际运行在默认的6379端口上。 - 附加问题:你贴出的JS代码存在语法错误,
createClient配置项闭合后多了一个多余的右大括号。
解决方法
- 修正Node连接代码:修改端口号为正确的
6379,同时删除多余的大括号,修正后代码如下:
const redis = require('redis') const client = redis.createClient({ host: '127.0.0.1', port: 6379 })
- 修正ufw防火墙规则:先删除之前错误放行的6739端口规则,再添加正确的6379端口放行规则,执行命令如下:
# 先确认规则序号,和你当前输出一致的情况下执行以下删除命令,若规则序号有变化可先执行sudo ufw status确认后再删除 sudo ufw delete 10 sudo ufw delete 5 # 放行正确的Redis默认端口 sudo ufw allow 6379 # 重载防火墙规则生效 sudo ufw reload
- 重启你的Node应用,即可正常连接Redis服务。
内容的提问来源于stack exchange,提问作者Anthony Luzquiños
相关产品推荐
相关产品推荐

