gpt4 book ai didi

node.js - connect-redis 不想连接到远程主机

转载 作者:IT王子 更新时间:2023-10-29 06:05:17 25 4
gpt4 key购买 nike

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

我正在运行一个 Node 应用程序,其中为缓存设置了一个 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

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

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,尽管我为它提供了一个主机。我还尝试构建 redis URL 并将其提供给 redisStore 构造函数。

我在这里做错了什么吗?

最佳答案

这里的问题是我将现有的 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
});

关于node.js - connect-redis 不想连接到远程主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38927926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com