【问题标题】:connect-redis doesn't want to connect to remote hostconnect-redis 不想连接到远程主机
【发布时间】:2016-12-20 01:20:30
【问题描述】:

前言:我正在 AWS EB 上运行节点应用程序,并且正在使用 Elasticache redis 服务器进行会话管理。我正在尝试使用 connect-redis 连接到 elasticache,但它似乎没有使用我提供的主机设置,而是默认为 127.0.0.1。

我正在运行一个节点应用程序,并为缓存设置了一个 redis 服务器。 main.js 下面:

var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var expressSession = require('express-session');
var redis   = require("redis");
var redisStore = require('connect-redis')(expressSession);

// Application libraries
var express = require('express');

// Redis client
var redisclient  = redis.createClient();
redisclient.on("error", function (err)
{
    console.log("REDIS Error " + err);
});

// Initialise the application
var app = express();

var sessionport = isNaN(process.env.SESSION_PORT) ? 6379 : Number(process.env.SESSION_PORT);
console.log('redis://' + process.env.SESSION_HOST + ':' + sessionport);
var store = new redisStore({
    host: process.env.SESSION_HOST,
    port: sessionport,
    client: redisclient,
    ttl :  2.29e+7
});
app.use(expressSession({
    saveUninitialized: false,
    resave: false,
    secret: process.env.SESSION_SECRET,
    store: store
}));

我的环境变量是:

SESSION_HOST: my-session-host.usw2.cache.amazonaws.com
SESSION_PORT: 6379
SESSION_SECRET: supersecret

但是,当我的服务器启动时,我会从节点输出中看到以下输出:

Worker #1 is online. (pid 17643)
redis://liamegan-session-001.i0o002.0001.usw2.cache.amazonaws.com:6379
REDIS Error Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
REDIS Error Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
REDIS Error Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379

尽管我为它提供了主机,但它似乎正在尝试连接到 127.0.0.1。我也尝试过为 redisStore 构造函数构建和提供一个 redis URL。

我在这里做了什么明显错误的事情吗?

【问题讨论】:

    标签: node.js amazon-web-services redis amazon-elastic-beanstalk


    【解决方案1】:

    这里的问题是我将现有的 redisclient 提供给 redisStore 构造函数。这样做胜过创建新客户端,因此会覆盖那里设置的主机和端口。为了解决这个问题,我只是将主机和端口添加到 redis.createClient。

    // Redis client
    var sessionport = isNaN(process.env.SESSION_PORT) ? 6379 : Number(process.env.SESSION_PORT);
    var redisclient  = redis.createClient({
        host: process.env.SESSION_HOST,
        port: sessionport
    });
    

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多