【发布时间】: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