【问题标题】:Nodejs Redis createClient() functionNodejs Redis createClient() 函数
【发布时间】: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服务在运行吗?

标签: node.js 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} )

希望我节省了您的时间。

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2016-04-29
    • 2019-06-08
    • 1970-01-01
    • 2016-12-06
    相关资源
    最近更新 更多