最近在折腾node后端,遇到了一个redis连接失败的问题,记录一下:
场景复现: 本地连接redis代码:
const client = redis.createClient("6379", "127.0.0.1");
client.on("connect", function () {
console.log("Redis Connected!");
});
client.connect();
服务器连接redis代码:
const client = redis.createClient("6379", "172.17.0.1");//redis docker 的 host 和 port
client.on("connect", function () {
console.log("Redis Connected!");
});
client.connect();
本地连接成功,服务器连接redis docker失败, 报错:
Error: connect ECONNREFUSED 127.0.0.1:6379
之后无论怎么修改配置端口号和host都会报错说连不上127.0.0.1:6379
。
后排查原因发现redis.createClient("6379", "172.17.0.1");
代码错误,导致redis绕过配置连接默认host和端口号,本地的redis恰好在默认127.0.0.1:6379
下运行。
修改方法:
将 redis.createClient("6379", "172.17.0.1");
修改为:
const client = redis.createClient({
url: "redis://172.17.0.1:60379",
});
即可。