You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Node.js(ioredis)连接RedisLab及EAI_FAIL错误排查

使用ioredis连接RedisLab及EAI_FAIL错误排查

一、正确连接RedisLab的步骤

  1. 安装ioredis依赖
    npm install ioredis
    # 或用yarn
    yarn add ioredis
    
  2. 从RedisLab控制台获取实例信息
    需拿到三个核心信息:
    • 主机地址(如redis-12345.redislabs.com,不带端口和协议前缀)
    • 端口号(如12345)
    • 实例密码(创建实例时设置的密码)
  3. 编写连接代码
    两种常用写法:
    • 拆分参数写法:
      const Redis = require('ioredis');
      
      const redisClient = new Redis({
        host: 'redis-12345.redislabs.com', // 纯域名,不要加端口或redis://
        port: 12345,
        password: 'your-redis-instance-password',
        db: 0 // 可选,默认连接第0个数据库
      });
      
      // 测试连接
      redisClient.ping()
        .then(() => console.log('RedisLab连接成功'))
        .catch(err => console.error('连接失败:', err));
      
    • URL字符串写法:
      const Redis = require('ioredis');
      
      // 格式:redis://:密码@主机地址:端口/数据库编号
      const redisClient = new Redis('redis://:your-redis-instance-password@redis-12345.redislabs.com:12345/0');
      
      redisClient.ping().then(console.log).catch(console.error);
      

二、EAI_FAIL错误的排查与解决

你遇到的errno: -3004,code: 'EAI_FAIL'是DNS解析失败,从错误信息里的hostname: 'redis:123.redislabs.com:18094'能直接定位问题:

  • 错误根源:你把协议前缀、主机地址、端口号混在了同一个hostname参数里,DNS服务器无法识别这个混乱的字符串,导致解析失败。

具体解决步骤:

  1. 修正hostname参数:只保留纯域名(如redis-123.redislabs.com),端口单独放在port字段
  2. 验证域名解析:在终端执行nslookup redis-123.redislabs.com,能返回IP说明DNS正常;返回错误则检查域名是否复制正确
  3. 检查网络连通性:用telnet redis-123.redislabs.com 18094测试端口是否可访问,不通的话可能是防火墙或RedisLab实例的IP白名单限制
  4. 确认RedisLab实例状态:登录控制台查看实例是否正常运行,白名单是否包含你的当前IP

内容的提问来源于stack exchange,提问作者Abdul Haseeb TK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 19:22:17