当我尝试将我的Nodsjs应用程序连接到Heroku上的RedisCloud时,我收到以下错误
Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)
我什至尝试直接在代码中设置 redis URL 和端口来测试它。但是,它仍然试图连接到Heroku上的本地主机,而不是RedisCloud URL。
const {Queue} = require('bullmq');
const Redis = require('ioredis');
const conn = new Redis(
'redis://rediscloud:mueSEJFadzE9eVcjFei44444RIkNO@redis-15725.c9.us-east-1-4.ec2.cloud.redislabs.com:15725'
// Redis Server Connection Configuration
console.log('n==================================================n');
console.log(conn.options, process.env.REDISCLOUD_URL);
const defaultQueue = () => {
// Initialize queue instance, by passing the queue-name & redis connection
const queue = new Queue('default', {conn});
return queue;
};
module.exports = defaultQueue;
日志 https://pastebin.com/N9awJYL9 的完全转储
在.env 文件上设置REDISCLOUD_URL,如下所示
REDISCLOUD_URL =redis://rediscloud:password@hostname:port
从"ioredis"导入 * 作为 Redis ; 导出常量 Redis = 新 Redis(process.env.REDISCLOUD_URL(;
我只是很难找出如何连接下面的解决方案对我有用。
编辑---- 虽然我已经传递了连接到 Redis 云的参数,但它连接到我的机器中安装的本地 Redis。对不起! 我会在这里留下我的答案,以防万一有人需要连接到本地 Redis。
let express = require('express');
var redis = require('ioredis');
pwd = 'your_pwd'
url = 'rediss://host'
port = '1234'
redisConfig = `${url}${pwd}${port}`
client = redis.createClient({ url: redisConfig })
client.on('connect', function() {
console.log('-->> CONNECTED');
});
client.on("error", function(error) {
console.error('ERRO DO REDIS', error);
});
只是想发布我的情况,以防有人像我一样有同样的问题。 在我的情况下,我试图将 Redis 与 Bull 一起使用,所以我需要 url/port、host 数据来实现这一目标。
以下是信息: https://devcenter.heroku.com/articles/node-redis-workers
但基本上你可以像这样启动你的工作线程:
let REDIS_URL = process.env.REDISCLOUD_URL || 'redis://127.0.0.1:6379';
//Once you got Redis info ready, create your task queue
const queue = new Queue('new-queue', REDIS_URL);
如果您使用的是local,这意味着"redis://127.0.0.1:6379"请记住运行redis-server: https://redis.io/docs/getting-started/