gpt4 book ai didi

node.js - RedisStore 忽略主机和端口字段

转载 作者:行者123 更新时间:2023-12-02 12:22:57 27 4
gpt4 key购买 nike

我使用 expressconnect-redis 让服务器使用 Redis 进行 session 。

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 ,服务器应该通过端口 6378 (而不是默认的 6379)连接到 redis 而不是默认的 127.0.0.1 >

但是,无论这些值等于什么,我总是得到相同的输出:

Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379

配置过程中我遗漏了什么吗?

最佳答案

TL;DR

Redis 客户端缺少 hostport 参数。 RedisStore 内没有客户端。

const redisClient = createRedisClient({
host: 'redis',
port: 6379
});

return new RedisStore({
client: redisClient,
});

完整的可复制粘贴代码位于帖子末尾,以防对其他人有用。

完整版

有几种方法可以解决上面的代码。

<强>1。 const redisClient = createRedisClient() 没有分配任何位置,但它仍在执行连接工作。因此,服务器因无法连接而崩溃,但这不是 RedisStore 故障。

当我发布问题时,我没有注意到线路在那里,我认为它是由于商店而崩溃的。

事实上,没有这条线它也能工作,因为 RedisStore has a default client implementation .

or created for you using the host, port, or socket params.

  return new RedisStore({
host: 'redis',
port: 6379,
});

<强>2。 Redis 客户端缺少主机和端口自定义值(默认值为 '127.0.0.1'6379)

  import { createClient as createRedisClient } from 'redis';
const redisClient = createRedisClient({
host: 'redis',
port: 6379
});

如果我们使用特定的客户端实现,那么将其传递到 RedisStore 也是有意义的:

  const RedisStore = connectRedis(Session);
return new RedisStore({
client: redisClient,
});

完整外卖代码

服务器.js

import Session from 'express-session';
import initializeRedis from './redis';

// Initialize session.
const session = Session({
resave: true,
saveUninitialized: true,
key: 'SID',
secret: 'Luke Skywalker',
store: initializeRedis(Session)
});
app.use(session);

redis.js

import { createClient as createRedisClient } from 'redis';
import connectRedis from 'connect-redis';

export default function initializeRedis(Session) {
const redisClient = createRedisClient({
host: 'redis', // or '127.0.0.1'.
port: 6379,
});
const RedisStore = connectRedis(Session);
return new RedisStore({ client: redisClient });
}

关于node.js - RedisStore 忽略主机和端口字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41985182/

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