Node.js v19.7.0中Redis ClientClosedError报错及教程差异疑惑
问题解答
报错原因
ClientClosedError: The client is closed 这个错误的核心原因是你使用的Redis Node.js客户端版本为v4.x及以上——这类新版本客户端默认不会自动与Redis服务器建立连接。当你创建客户端实例后直接执行命令时,客户端还处于未连接的关闭状态,自然会抛出这个错误。添加await client.connect()后,客户端才会主动发起连接,命令就能正常执行了。
为什么不同教程代码差异大
你遇到的两种写法差异,本质是Redis客户端版本不同导致的:
- 《Introduction to Redis + Node.js》的示例大概率基于v4.x+版本编写,但遗漏了显式连接的步骤,属于文档疏漏;
- Fullstack Codecademy的YouTube教程使用的是旧版Redis客户端(v3.x及以下)或者其他客户端库(比如ioredis),这类旧版本在创建客户端实例时会自动完成连接,不需要手动调用
connect()方法。
验证方式
你可以检查项目的package.json文件里的redis依赖版本:
- 如果是
"redis": "^4.0.0"及以上,必须显式调用await client.connect(),执行完命令后还可以用await client.disconnect()关闭连接; - 如果是
"redis": "^3.0.0"及以下,创建实例后直接执行命令即可,无需手动连接。
内容的提问来源于stack exchange,提问作者wei guo
相关产品推荐
相关产品推荐

