Heroku Redis 实例的 Redis 连接错误:Redis 连接失败 - 读取 ECONNRESET heroku 实例
Redis Connection Error with Heroku Redis Instance: Redis connection to failed - read ECONNRESET heroku instance
我有一个节点 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 .
任何帮助将不胜感激。
我找不到根本问题。但是在 Chris 的评论之后,我再次检查了我使用的 Heroku Redis 插件。
Heroku Redis 为我提供了来自 amazonaws.com 的实例,Redis Enterprise Cloud 为我提供了来自 redislabs.com 的实例。当我添加和使用Redis企业云时,我可以连接到它。
但是Heroku Redis的连接问题对我来说还是个秘密
我遇到了这种情况,结果是通过 TLS 连接的“Heroku Redis”工作正常(以 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_URL
是 rediss://<details>
我有一个节点 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 .
任何帮助将不胜感激。
我找不到根本问题。但是在 Chris 的评论之后,我再次检查了我使用的 Heroku Redis 插件。
Heroku Redis 为我提供了来自 amazonaws.com 的实例,Redis Enterprise Cloud 为我提供了来自 redislabs.com 的实例。当我添加和使用Redis企业云时,我可以连接到它。
但是Heroku Redis的连接问题对我来说还是个秘密
我遇到了这种情况,结果是通过 TLS 连接的“Heroku Redis”工作正常(以 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_URL
是 rediss://<details>