【问题标题】:Redis performance with a Digital Ocean managed instance使用 Digital Ocean 托管实例的 Redis 性能
【发布时间】:2021-01-12 03:26:32
【问题描述】:

我正在使用 nodeJS 将我的 Digital Ocean droplet (Ubuntu 20.04) 连接到 Digital Ocean 管理的 Redis 实例。我正在使用 ioredis npm 库。

考虑下面的简单代码。此代码与公共网络名称完美配合,尽管需要大约 400 毫秒。如果我使用专用网络名称,整个脚本就会挂起。我也尝试过私有 IP 10。..* 但这也不起作用。

是否有人对如何直接连接 VPC 有任何经验或见解?有没有特定的方式来使用私有网络名称?

const Redis = require("ioredis");

(async () => {
  // Spin up a redis client
  const redis = new Redis({
    host: "db-redis-**************-0.b.db.ondigitalocean.com",
    port: *****,
    username: "******",
    password: "**********",
    tls: {
      key: "",
      cert: "",
    },
  });

  console.time("Total time to write/read a 10 character string to redis");

  // Generate a random string
  const generateRandomString = (length = 6) =>
    Math.random().toString(20).substr(2, length);

  // Save data to the redis server with a TTL of 2 miniutes
  redis.set("redisTest", generateRandomString(10), "EX", 120);

  // Now read it back
  await redis.get("redisTest", function (err, result) {
    if (err) {
      console.error(err);
    } else {
      console.log("Data retrieved: ", result);
    }
  });

  // Done
  console.log("Done.");
  console.timeEnd("Total time to write/read a 10 character string to redis");
})();

【问题讨论】:

  • 你的 Droplet 和你的 Redis 服务器在同一个 VPC 中吗?挂起很可能是您的连接尝试的防火墙黑洞,而不是性能问题,所以我猜它们位于不同的 VPC 中。
  • @RobertNubel 谢谢 - 这有帮助,因为我意识到它们在不同的 区域 - 将它们移动到与水滴相同的区域,现在名称解析了。谢谢先生。
  • 很高兴听到这个消息!我在下面添加了信息作为答案。

标签: redis digital-ocean ioredis


【解决方案1】:

如果在打开连接时使用私有网络地址挂起,可能是因为您的 Droplet 与您的 Redis 数据库不在同一个 VPC 中。在您的情况下,事实证明 Droplet 和 Redis 位于不同的区域,因此将它们移动到同一区域(并确保它们位于该区域内的同一 VPC 中)应该可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    相关资源
    最近更新 更多