错误:Redis 连接到 127.0.0.1:6379 失败 - 连接 ECONNREJECT 127.0.0.1:6



我创建了一个使用 Redis 的 Nodejs 服务器。当我在我的机器中运行它时,它运行良好。但是当我尝试将代码推送到 heroku 时,我遇到了上面的错误。我已经安装了 Redis togo,我可以在我的配置变量中看到REDISTOGO_URL

在我做了一些Stackoverflow帖子之后:

let RedisStore = require('connect-redis')(session)
let redisClient = redis.createClient()
if(process.env.REDISCLOUD_URL){
let redisURL = url.parse(process.env.REDISCLOUD_URL);
redisClient = redis.createClient(redisURL)
}

我的应用程序在开发中运行良好,但是当我尝试在heroku中启动我的应用程序时,当我heroku logs --tail时出现以下错误:

错误:Redis 连接到 127.0.0.1:6379 失败 - 连接 127.0.0.1:6379

您收到该错误是因为您第一次尝试使用redis.createClient()创建 Redis 客户端。 默认情况下,它将连接到127.0.0.1:6379

它在本地主机上工作正常,因为它不会进入if (process.env.REDISCLOUD_URL并且本地 redis 可用。

要解决此问题,

let redisClient
if(process.env.REDISCLOUD_URL){
let redisURL = url.parse(process.env.REDISCLOUD_URL);
redisClient = redis.createClient(redisURL)
} else {
redisClient = redis.createClient()
}

您的代码似乎需要一个REDISCLOUD_URL环境变量。如果您已经定义了REDISTOGO_URL那么这将解释为什么它不起作用。

Heroku 要求您在创建 redisClient 时提供一个REDISCLOUD_URL环境变量。

因此,您应该在创建 Redis 客户端时提供REDISCLOUD_URL。

let redisClient
if(process.env.REDISCLOUD_URL){
redisClient = redis.createClient(process.env.REDISCLOUD_URL)
} else {
redisClient = redis.createClient()//for running locally
}

最新更新