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

问题描述 投票:0回答:4
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 文档中的这个示例,但仍然收到错误消息:

Redis error:  connect ECONNREFUSED 127.0.0.1:6379

我将环境主机和端口变量记录到控制台,并获得了远程主机ipv4地址,但客户端仍然尝试连接到本地主机而不是远程主机(我故意从本地设备卸载了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

node.js express redis node-redis
4个回答
9
投票

它与此代码一起工作:

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

1
投票

redis v4 中的配置对象发生了变化,您可以在这里查看新选项。以下是我在项目中的配置方式。

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

0
投票

您可以检查一下目的地的端口是否可达。可能是防火墙阻止了您的访问


0
投票

如果你想在 Express Nodejs 应用程序中连接到远程 Redis 数据库,则需要像这样传递 url:

const url = `rediss://default:your_password@your_host:your_port`;
const client = redis.createClient({
    url,
});
© www.soinside.com 2019 - 2024. All rights reserved.