无法连接到远程redis主机[nodeJS]

j2cgzkjk  于 2023-05-28  发布在  Redis
关注(0)|答案(3)|浏览(221)
const redis = require('redis');
require('dotenv').config();
console.log(process.env.redisHost, ':', process.env.redisPort);
const redisClient = redis.createClient({
    host: process.env.redisHost,
    port: process.env.redisPort,
    password: process.env.redisKey
});
redisClient.connect();
redisClient.on('error', err => console.log('Redis error: ', err.message));
redisClient.on('connect', () => console.log('Connected to redis server'));
module.exports = redisClient;

我尝试了redis docs的这个示例,但仍然得到一个错误:Redis error: connect ECONNREFUSED 127.0.0.1:6379
我将环境主机和端口变量记录到控制台,并获得了远程主机的ipv4地址,但客户端仍然试图连接到localhost而不是远程主机(我故意从本地设备卸载redis以检查客户端是否正常工作)。我还确认了远程redis主机工作正常。
我也尝试了不同的方法,比如:https://cloud.google.com/community/tutorials/nodejs-redis-on-appengine

redis.createClient(port, host, {auth_pass: password});

但我还是犯了同样的错误。
我可以通过命令行连接到redis主机:

redis-cli.exe -h XX.XX.XX.XXX -a Password
XX.XX.XX.XXX:6379> set name dhruv
OK
XX.XX.XX.XXX:6379> get name
"dhruv"
XX.XX.XX.XXX:6379> exit

我第一次尝试在nodejs上使用redis,所以没有一个合适的想法,但我认为我做的一切都是正确的。任何解决方案/变通方法都将有所帮助:D

at0kjp5o

at0kjp5o1#

它使用了以下代码:

const url = `redis://${process.env.redisHost}:${process.env.redisPort}`;
const redisClient = redis.createClient({
    url,
    password: process.env.redisKey
});
redisClient.connect();
lo8azlld

lo8azlld2#

你能检查在目的地端口是可到达的吗?也许防火墙阻止了你的访问

7kqas0il

7kqas0il3#

redis v4中的配置对象发生了变化,可以查看新的选项here。下面是我在我的项目中如何配置它。

const redisClient = redis.createClient({ socket: { port: process.env.redisPort, host: process.env.redisHost }  })
redisClient.connect()

相关问题