Nodejs Redis createClient() 函数

Ngu*_*Anh 2 redis node.js

有人能解决这个问题吗?我是 Node.js 和 Redis 初学者。

该函数createClient()可以接受 2 个参数:端口和主机。但我仍然被这个问题困扰。

var client = redis.createClient(); 

client.on('connect', function(){
    console.log('Redis client connected');
});
Run Code Online (Sandbox Code Playgroud)

错误:Redis 连接到 127.0.0.1:6379 失败 - 连接 ECONNREFUSED 127.0.0.1:6379 C:\Users\my-pc\Desktop\FINAL> 节点索引 events.js:187 throw er; // 未处理的“错误”事件 ^

错误:与 127.0.0.1:6379 的 Redis 连接失败 -
在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1128:14) 处连接 ECONNREFUSED 127.0.0.1:6379 在 RedisClient 实例上发出“错误”事件:at 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(内部/流/destroy.js:60:3)在processTicksAndRejections(内部/process/task_queues.js:80:21){errno:'ECONNREFUSED',代码:'ECONNREFUSED'
,系统调用:'连接',地址:'127.0.0.1',
端口:6379 }

小智 6

每当我也开始使用 docker 多个本地容器时,这是一个非常常见但简单的问题。

看,您已经创建了一个节点应用程序和一个 Redis 服务器,但两者是分开的,您没有在它们之间建立任何通信,这就是您面临此类问题的原因。

现在,首先您必须在节点应用程序和 redis 服务器之间建立连接,以便它们之间可以进行通信。

为此,只需按照说明进行操作即可,希望这能解决您的问题。

步骤 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.
Run Code Online (Sandbox Code Playgroud)

Docker-compose:Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。docker-compose 概述

步骤2:在项目目录中创建一个 docker-compose .yml 文件,命名为“docker-compose.yml”

步骤 3:在“docker-compose.yml”文件中写入以下代码:

version: "2.0"
services: 
  redis-server: 
    image: "redis"
  node-app: 
    build: .
    ports: 
      - "8080:8080"
Run Code Online (Sandbox Code Playgroud)

步骤 4:在 redis.createClient() 函数中,只需在 index.js 文件中传递主机和端口参数

const client = redis.createClient({
    host: "redis-server",
    port: 6379
});
Run Code Online (Sandbox Code Playgroud)

第 5 步:使用 docker-compose CLI 中的 docker-compose 构建并运行 docker 容器

docker-compose up --build
Run Code Online (Sandbox Code Playgroud)

步骤 6:最后,打开浏览器并点击以下 URL:

localhost:8080
Run Code Online (Sandbox Code Playgroud)


cib*_*en1 5

仅供参考(我今晚浪费了这个)

这不起作用(它默认连接到 localhost:6379 无论您在 url 中输入什么):

const redisURL = "redis://foo.bar.org:6379"
redis.createClient( redisURL )
Run Code Online (Sandbox Code Playgroud)

但这确实有效

redis.createClient( {url: redisURL} )
Run Code Online (Sandbox Code Playgroud)

希望我节省了您的时间。