#redis #digital-ocean #ioredis
#redis #digital-ocean #ioredis
Вопрос:
Я использую NodeJS для подключения моей цифровой капли океана (Ubuntu 20.04) к экземпляру 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");
})();
Комментарии:
1. Находится ли ваш Droplet в том же VPC, что и ваш сервер Redis? Скорее всего, зависание — это ошибка брандмауэра при попытке подключения, а не проблема с производительностью, поэтому я бы предположил, что они находятся в разных виртуальных машинах.
2. @RobertNubel Спасибо — это помогло, потому что я понял, что они находятся в разных регионах — переместили оба в тот же регион, что и droplet, и теперь имя меняется. Спасибо, сэр.
3. Рад это слышать! Я добавил информацию в качестве ответа ниже.
Ответ №1:
Если использование адреса частной сети зависает при открытии соединения, это, вероятно, связано с тем, что ваш Droplet не находится в том же VPC, что и ваша база данных Redis. В вашем случае оказалось, что Droplet и Redis находятся в разных регионах, поэтому перемещение их в один и тот же регион (и обеспечение того, чтобы они находились в одном и том же VPC в этом регионе) должно решить проблему.