【发布时间】:2022-11-07 13:32:27
【问题描述】:
我正在使用iron-session 来处理我的 nextjs 应用程序上的会话,但有些会话太大,所以我只使用iron-session 创建了一个密钥,并使用 Redis 获取结果。
我有一个非常基本的连接器
import { createClient } from 'redis';
import { logError } from './logger';
const client = createClient({ url: process.env.REDIS_URL });
client.on('error', (error) => {
logError(error)
});
export async function connect() {
if (!client.isOpen) await client.connect()
return client
}
但是我有很多Socket closed unexpectedly 错误,应该是因为我从不调用quit 函数。
我不知道Redis服务器一直出现这种错误是不是一个大问题,如果不是,我可以忽略它。
另一种解决方案是在我的api 和getServerSideProps 的末尾调用quit,它们正在使用来自Redis 的会话,但我发现它并非一尘不染,这将是很多代码和复杂性
【问题讨论】:
-
程序在哪里运行?你能详细说明运行时环境吗?它是无服务器的吗?也许它只在被调用时被调用。如何在连接丢失时重新建立连接(重试连接)?
-
这是因为您的 redis 连接也尝试在客户端进行连接。客户端不支持 redis 连接,您必须仅在服务器端初始化/连接到 redis。
-
Redis 仅调用 API 路由而不是客户端
-
这是否回答了您的问题:Node.js: Closing all Redis clients on shutdown?