节点的Redis创建客户端()函数

wbgh16ku  于 2023-03-07  发布在  Redis
关注(0)|答案(4)|浏览(169)

有人能解决这个问题吗?我是node.js和redis的初学者。
函数createClient()可以接受2个参数:端口和主机。但是我仍然被这个问题困扰着。

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〉节点索引事件。js:187抛出er;//未处理的"error"事件^
错误:Redis连接到www.example.com失败-连接ECONNREFUSED 127.0.0.1:6379127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
在TCPConnectWrap. afterConnect [as oncomplete](net. js:1128:14)在以下位置的RedisClient示例上发出了"错误"事件:在RedisClient上。在套接字上的错误(C:\用户\我的电脑\桌面\最终\节点_模块\redis\index. js:406:14)。在套接字上的错误(C:\用户\我的电脑\桌面\最终\节点_模块\redis\index. js:279:14)。在套接字上的错误(C:\用户\我的电脑\桌面\最终\节点_模块\redis\index. js:279:14)。在事件. js:210:5。在事件. js:210:5。在事件. js:210:210。"拒绝连接",
代码:'ECONNREFUSED',系统调用:"连接",地址:'127.0.0.1',
端口:6379}

vxqlmq5t

vxqlmq5t1#

这是一个非常常见但简单的问题,每当我也开始与docker多个本地容器。
你看,你已经创建了一个节点应用程序和一个redis服务器,但是两者是分开的,你没有在它们之间建立任何通信,这就是为什么你会面临这种类型的问题。
现在,首先你需要在node app和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.

坞站-组合:Compose是一个用于定义和运行多容器Docker应用程序的工具。
步骤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"

步骤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
rxztt3cl

rxztt3cl2#

仅供参考(我浪费了今晚的时间)
这不起作用(它默认连接到localhost:6379,无论你在url中输入什么):

const redisURL = "redis://foo.bar.org:6379"
redis.createClient( redisURL )

但这个确实有效

redis.createClient( {url: redisURL} )

希望我节省了你的时间。

y4ekin9u

y4ekin9u3#

根据错误代码“ECONNREFUSED”,在尝试连接客户端之前,您是否确定您实际上正在本地主机和端口6379上运行redis服务器?

zzwlnbp8

zzwlnbp84#

当我在nodejs上开始使用Redis时,我也遇到过类似的问题。

  • 列表项

问题是redis服务器连接还没有建立,但是你仍然在使用你的连接,你可以使用async并等待直到你的连接建立。
您可以使用以下代码:
变量客户端= redis.创建客户端();

cliet.connect() .then(async () => {
  client.on('error', err => {
    console.log('Error ' + err);
    logger.info("Error is her");
  });
});

我希望你的问题得到解决。如果没有,你可以回到这个线程

相关问题