NodeJS Heroku Redis示例的Redis连接错误:Redis连接失败-读取ECONNRESET heroku示例

fcg9iug3  于 2023-06-05  发布在  Node.js
关注(0)|答案(3)|浏览(206)

我有一个Node JS应用程序。我使用的是Heroku Redis的Redis(带有async-redis库)。实际上,我有两个不同的Heroku帐户和Heroku托管的两个不同的Node.js应用。但除了Redis凭据之外,这两个应用程序都是相同的代码。
有趣的是,我的应用程序可以连接到第一个Heroku Redis示例。但是我无法连接到新的Heroku Redis示例。此外,我删除和创建新的示例,但他们不工作。
错误是:

Error: Redis connection to redis-123.compute.amazonaws.com:28680 failed - read ECONNRESET\n    
at TCP.onStreamRead (internal/stream_base_commons.js:162:27)

我的连接语句如下:

var redisPassword = 'password123';
var redisOptions = { host: 'redis-123.cloud.redislabs.com', port: '17371', auth_pass: redisPassword }
//var redisPassword = 'password123';
//var redisOptions = { host: 'redis-123.compute.amazonaws.com', port: '28680', auth_pass: redisPassword }

const client = redis.createClient(redisOptions);

client.on('connect', function () {
  console.log('Redis client connected');
});

client.on('error', function (err) {
  console.log('An error on Redis connection: ' + err);
});

正如我所看到的,Heroku Redis示例上唯一不同的是。我的第一个Redis示例托管在cloud.redislabs.com,但第二个示例(我无法连接)托管在compute.amazonaws.com
任何帮助将不胜感激。

kknvjkwl

kknvjkwl1#

我遇到了这种情况,结果是“Heroku Redis”通过TLS连接工作(以rediss开头的URL),一旦我调整了我的客户端代码,按照Heroku redis文档中提供的示例进行连接:
https://devcenter.heroku.com/articles/connecting-heroku-redis#ioredis-module

const Redis = require("ioredis");

const client = new Redis(process.env.REDIS_URL, {
    tls: {
        rejectUnauthorized: false
    }
});

其中process.env.REDIS_URLrediss://<details>

xt0899hw

xt0899hw2#

我找不到根本问题。但是在克里斯的评论之后,我再次检查了我使用的Heroku Redis插件。

Heroku Redis从www.example.com给了我一个示例amazonaws.com,Redis Enterprise Cloud从redislabs.com给了我一个示例。当我添加并使用Redis企业云时,我可以连接到它。
但是Heroku Redis的连接问题对我来说仍然是一个秘密。

ev7lccsx

ev7lccsx3#

看起来Heroku上的Redis会有一个ECONNRESET,如果你尝试连接到TLS端点,但你已经超过了最大连接数。非TLS端点(如果可用)将返回更有用的错误消息。
更多信息here from Heroku .

相关问题