Nodejs Azure Redis Cache зависает навсегда и читает ошибку ECONNRESET
Я создаю новый кэш Azure Redis, на создание которого уходит почти 5 минут. Я использую пакет node-redis, вот мой код
var client = redis.createClient(
process.env.REDIS_PORT || 6379,
process.env.REDIS_HOST || '127.0.0.1'
);
if(process.env.REDIS_HOST) {
client.auth(process.env.REDIS_KEY);
}
Да, эти переменные среды установлены правильно, они просто на некоторое время зависают и выдают ошибку: сбой подключения Redis к mycache.redis.cache.windows.net:6380 - прочитайте ECONNRESET.
Теперь, когда я использую Redis-Cli, чтобы попытаться соединиться с redis-cli -h myhost -p 6380 -a the-auth-key
он просто зависает в командной строке, и, кажется, соединение не установлено, но и ошибки нет. Это просто ничего не делает. Если я изменю порт и т.д., я получаю ошибку соединения. Так что мне сейчас интересно, что я делаю не так?
Я создал еще один кэш redis для другого региона (я взял самый большой, с 99,9 SLA и т. Д.). Тем не менее, никакое соединение невозможно.
Любая помощь будет оценена.
1 ответ
Для новых кэшей по умолчанию включена только конечная точка SSL (порт 6380). Некоторые клиенты (например, redis-cli) не поддерживают SSL. Вам необходимо проверить, поддерживает ли узел redis SSL. Вы получите ошибки, если попытаетесь подключиться к порту SSL с клиентом, который не поддерживает SSL.
Если вам нужно использовать клиент, не поддерживающий SSL, есть два варианта. Одним из них является создание туннеля SSL между локальной машиной и кэшем Redis с использованием приложения, такого как 'stunnel'. Я знаю, что stunnel хорошо работает для специальных сценариев, таких как redis-cli, но я не уверен, как он будет работать при рабочей нагрузке.
Второй вариант - включить конечную точку без SSL (порт 6379) на портале Azure. Однако мы не рекомендуем это для рабочих кэшей, поскольку ваш ключ доступа и данные будут отправлены в виде открытого текста.