我有一个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。
任何帮助将不胜感激。
3条答案
按热度按时间kknvjkwl1#
我遇到了这种情况,结果是“Heroku Redis”通过TLS连接工作(以
rediss
开头的URL),一旦我调整了我的客户端代码,按照Heroku redis文档中提供的示例进行连接:https://devcenter.heroku.com/articles/connecting-heroku-redis#ioredis-module
其中
process.env.REDIS_URL
是rediss://<details>
xt0899hw2#
我找不到根本问题。但是在克里斯的评论之后,我再次检查了我使用的Heroku Redis插件。
Heroku Redis从www.example.com给了我一个示例amazonaws.com,Redis Enterprise Cloud从redislabs.com给了我一个示例。当我添加并使用Redis企业云时,我可以连接到它。
但是Heroku Redis的连接问题对我来说仍然是一个秘密。
ev7lccsx3#
看起来Heroku上的Redis会有一个
ECONNRESET
,如果你尝试连接到TLS端点,但你已经超过了最大连接数。非TLS端点(如果可用)将返回更有用的错误消息。更多信息here from Heroku .