我正在使用 express
和 connect-redis
让服务器使用Redis进行会话 .
import Session from 'express-session';
const session = Session({
resave: true,
saveUninitialized: true,
key: '...',
secret: '...',
store: initializeRedis(Session);
});
redis初始化程序如下所示:
import { createClient as createRedisClient } from 'redis';
import connectRedis from 'connect-redis';
export default function initializeRedis(Session) {
const redisClient = createRedisClient();
const RedisStore = connectRedis(Session);
return new RedisStore({
host: 'redis',
port: 6378,
});
}
根据之前的option parameters,服务器应连接 redis
而不是默认 127.0.0.1
通过端口 6378
而不是默认 6379
但是,无论这些值等于什么,我总是得到相同的输出:
错误:Redis连接到127.0.0.1:6379失败 - 连接ECONNREFUSED 127.0.0.1:6379
在配置过程中有什么我错过的吗?
1 回答
TL; DR
Redis客户端缺少
host
和port
参数 .RedisStore
内没有客户 .帖子末尾的完整复制粘贴代码,以防对其他人有用 .
完整版
有几种方法可以解决上面的代码 .
1. The const redisClient = createRedisClient() was assigned nowhere ,但它仍在进行连接工作 . 因此,服务器崩溃,因为它无法连接,但它不是
RedisStore
错误 .当我发布问题时,我没有注意到那条线路在那里,我认为它因为商店而崩溃了 .
事实上,没有那条线它起作用,因为RedisStore has a default client implementation .
2. The redis client was missing the host and port custom values (默认值为
'127.0.0.1'
和6379
)如果我们使用特定的客户端实现,我们将它传递给
RedisStore
也是有意义的:完整的外卖代码
server.js
redis.js