Nodejs Redis createClient() 函数
Posted
技术标签:
【中文标题】Nodejs Redis createClient() 函数【英文标题】:Nodejs Redis createClient() function 【发布时间】:2020-03-10 06:38:17 【问题描述】:谁能解决这个问题?我是 node.js 和 redis 初学者。
函数createClient()
可以接受两个参数:端口和主机。但我仍然被这个问题困扰。
var client = redis.createClient();
client.on('connect', function()
console.log('Redis client connected');
);
错误:Redis 连接到 127.0.0.1:6379 失败 - 连接 ECONNREFUSED 127.0.0.1:6379 C:\Users\my-pc\Desktop\FINAL>节点索引 events.js:187 投掷者; // 未处理的“错误”事件 ^
错误:Redis 连接到 127.0.0.1:6379 失败 - 连接 ECONNREFUSED 127.0.0.1:6379 在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1128:14) 在 RedisClient 实例上发出“错误”事件: 在 RedisClient.on_error (C:\Users\my-pc\Desktop\FINAL\node_modules\redis\index.js:406:14) 在套接字。 (C:\Users\my-pc\Desktop\FINAL\node_modules\redis\index.js:279:14) 在 Socket.emit (events.js:210:5) 在 emitErrorNT (internal/streams/destroy.js:92:8) 在 emitErrorAndCloseNT (internal/streams/destroy.js:60:3) 在 processTicksAndRejections (internal/process/task_queues.js:80:21) errno: 'ECONNREFUSED', 代码:'ECONNREFUSED',系统调用:'connect',地址:'127.0.0.1', 端口:6379
【问题讨论】:
真正的问题是什么? Redis 仅在端口 6379 上配置。即使在我的 index.js 文件中,应用程序侦听端口 6379 仍然会导致此问题。 你的redis服务在运行吗? 【参考方案1】:每当我开始使用 docker 多个本地容器时,这是一个非常常见但简单的问题。
你看,你已经创建了一个节点应用程序和一个redis服务器,但是两者是分开的,你没有在它们之间建立任何通信,这就是你面临这类问题的原因。
现在,首先您必须在节点应用程序和 redis-server 之间建立连接,以便它们之间可以进行通信。
为此,只需按照说明进行操作,希望这能解决您的问题。
第 1 步:为了在多个本地容器之间建立连接,您有两种选择,
* Use docker CLI's networking features.
* Or, simply use docker-compose to solve the issue, i prefer docker-compose and i will show how to do this using docker-compose.
Docker-compose:Compose 是一个用于定义和运行多容器 docker 应用程序的工具。 Overview of docker-compose
第二步:在你的项目目录下创建一个 docker-compose .yml 文件,命名为“docker-compose.yml”
步骤 3:在“docker-compose.yml”文件中编写以下代码:
version: "2.0"
services:
redis-server:
image: "redis"
node-app:
build: .
ports:
- "8080:8080"
第 4 步:在你的 redis.createClient() 函数中,只需在 index.js 文件中传递你的主机和端口参数
const client = redis.createClient(
host: "redis-server",
port: 6379
);
第 5 步:使用 docker-compose CLI 中的 docker-compose 构建和运行 docker 容器
docker-compose up --build
第 6 步:最后,打开浏览器并点击以下 URL:
localhost:8080
【讨论】:
OP 没有提及任何关于 Docker 的内容,因此该问题不太可能与 Docker 有关。【参考方案2】:根据错误代码“ECONNREFUSED”,您确定在尝试连接客户端之前实际上是在 localhost 和端口 6379 上运行 redis 服务器吗?
【讨论】:
我忘记打开服务器了。 现在一切正常。【参考方案3】:仅供参考(我今晚输了)
这不起作用(它默认连接到 localhost:6379 无论你在 url 中输入什么):
const redisURL = "redis://foo.bar.org:6379"
redis.createClient( redisURL )
但这确实有效
redis.createClient( url: redisURL )
希望我节省了您的时间。
【讨论】:
以上是关于Nodejs Redis createClient() 函数的主要内容,如果未能解决你的问题,请参考以下文章