首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从节点服务器连接到Heroku Redis

无法从节点服务器连接到Heroku Redis
EN

Stack Overflow用户
提问于 2022-08-12 12:33:22
回答 1查看 154关注 0票数 0

很好地连接到当地的Redis和通过官方的Redis码头形象。但是,当我切换到ENV变量的Heroku值时。它无法连接。

我也尝试过完整的url选项,但是当我需要将options对象作为第二个参数添加到new Redis()时,这似乎不适用于任何Redis连接,如果我不为本地和官方的Redis图像传递任何选项,Url选项就能工作。

只向新的Redis()添加没有选项的heroku,看起来很有效,但是10秒后我得到了Redis Connection Failure

Heroku-Redis需要额外的准备步骤吗?

代码语言:javascript
运行
复制
import Redis, { RedisOptions } from 'ioredis';
import logger from '../logger';

const REDIS_HOST = process.env.REDIS_HOST || '127.0.0.1';
const REDIS_PORT = Number(process.env.REDIS_PORT) || 6379;
const REDIS_PASSWORD = process.env.REDIS_PASSWORD;
const REDIS_DB = Number(process.env.REDIS_DB) || 0;

const redisConfig: RedisOptions = {
  host: REDIS_HOST,
  port: Number(REDIS_PORT),
  password: REDIS_PASSWORD,
  db: Number(REDIS_DB),
  retryStrategy: function (times) {
    if (times % 4 == 0) {
      logger.error('Redis reconnect exhausted after 4 retries');
      return null;
    }
    return 200;
  },
};

const redis = new Redis(redisConfig);
redis.on('error', function () {
  logger.error('Redis Connection Failure');
});

export default redis;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-12 12:55:34

我不知道如何使用环境变量REDIS_HOSTREDIS_PORTREDIS_PASSWORDREDIS_DB。Redis 提供一个环境变量,该变量捕获所有这些的Heroku数据

在为Redis创建Heroku数据之后,将创建新版本并重新启动应用程序。应用程序配置中有一个REDIS_URL配置变量。它包含可用于访问Redis实例新配置的Heroku数据的URL。

这是他们关于如何从Node.js连接的示例

const =需要量(“redis”);client = redis.createClient({ url: process.env.REDIS_URL,socket:{ tls: true,rejectUnauthorized: false });

因此,相应地更改配置对象:

代码语言:javascript
运行
复制
const REDIS_URL = process.env.REDIS_URL;

const redisConfig: RedisOptions = {
  url: REDIS_URL,              // <--
  socket: {                    // <--
    tls: true,                 // <--
    rejectUnauthorized: false  // <--
  },                           // <--
  retryStrategy: function (times) {
    if (times % 4 == 0) {
      logger.error('Redis reconnect exhausted after 4 retries');
      return null;
    }
    return 200;
  },
};

您已经在本地使用环境变量来在本地设置Redis密码。用包含所有缺省值的适当REDIS_URL替换它,例如如下所示:

代码语言:javascript
运行
复制
REDIS_URL=redis://user:password@host:port/database
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73334256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档