【问题标题】:How to connect nodejs redis client to redis cloud server?如何将nodejs redis客户端连接到redis云服务器?
【发布时间】:2022-01-25 00:57:46
【问题描述】:
const redis = require('redis');

const client = redis.createClient({
  host: 'redis-19606.redislabs.com',
  port: 19606,
  password: 'password'
});

client.on('ready', () => {
  console.log('redis is connected');
});

client.on('error', (err) => {
  console.log('redis is disconnected: ', err);
});

(async () => {
  try {
    await client.connect();
  } catch (error) {
    console.error('error while connecting redis', error);
  }
})();

这似乎不起作用。我究竟做错了什么?它一直连接到 127.0.0.1:6379 这是默认配置,而不是我传递的。这仅发生在 redis 的 nodejs 客户端上。 go-redis 用于 redis 的 golang 客户端运行良好。

【问题讨论】:

    标签: javascript node.js redis


    【解决方案1】:

    只是猜测,但您使用的是哪个 Node Redis 版本?我在升级自己时遇到了困难。自版本 4.x.x 以来,客户端的配置已更改。从版本 4.x.x 开始,您必须使用符合 Client Configuration 的配置。因此使用

    const client = redis.createClient({
      socket: {
        host: 'redis-19606.redislabs.com',
        port: 19606,
      }
    });
    

    或使用网址

    const client = redis.createClient({
      url: "redis://redis-19606.redislabs.com:19606"
    });
    

    您的客户端配置与 Node Redis 版本 3.x.x 但不匹配 4.x.x。详情请见Redis NPM v3.1.2Redis NPM v4.0.1

    【讨论】:

    【解决方案2】:
    1. 您使用的是什么版本的 redis?
    2. 不要通过编写“client.connect()”显式连接到 redis,但是 而是在设置主机、端口和密码后使用它:
      redisClient.on("connect", () => {})
      

    然后您可以使用 redisClient 变量来获取和设置值。

    1. 此外,如果您尝试连接到 redislabs 服务器,那么我认为您的主机名可能不正确,请从 redislabs 仔细检查您的主机。

    【讨论】:

      猜你喜欢
      • 2018-07-29
      • 2012-06-15
      • 2021-12-20
      • 2022-01-08
      • 2018-09-06
      • 2021-10-25
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      相关资源
      最近更新 更多