Подключение к RedisToGo через Node.JS

Я использую Redis To Go в сочетании с библиотекой https://github.com/mranney/node_redis. Redis дает мне URL, который выглядит как redis://me:978287c0b670694673d045f08b2e0371@icefish.redistogo.com:9393 но я не знаю, как использовать его как createClient() принимает только хост и порт.

2 ответа

Решение

Я считаю, что схема для URL-адреса у вас есть:

redis://username:password@host:port,

Я не верю username используется. node_redis предоставляет два метода, которые вы будете использовать для входа в систему: createClient а также auth, В readme есть подробности, но для справки здесь есть соответствующая часть:

redis.createClient (порт, хост, опции)

Создайте новое клиентское соединение. port по умолчанию 6379 а также host по умолчанию 127.0.0.1, Если у вас есть redis-server работает на том же компьютере, что и узел, тогда по умолчанию для порта и хоста, вероятно, все в порядке. options в объекте со следующими возможными свойствами:

  • parser: какой анализатор ответов протокола Redis использовать. По умолчанию hiredis если этот модуль установлен. Это также может быть установлено в javascript,
  • return_buffers: по умолчанию false. Если установлено true, тогда массовые ответы на данные будут возвращены как объекты Buffer узла вместо строк JavaScript.

createClient() возвращает RedisClient объект с именем client во всех примерах здесь.

client.auth (пароль, обратный вызов)

При подключении к серверам Redis, требующим аутентификации, AUTH Команда должна быть отправлена ​​в качестве первой команды после подключения. Это может быть сложно согласовать с переподключениями, проверкой готовности и т. Д. Чтобы сделать это проще, client.auth() тайники password и отправит его после каждого подключения, включая переподключения. callback вызывается только один раз, после ответа на самый первый AUTH Команда отправлена.

Мне также пришлось добавить параметр no_ready_check: true для вызова redis.createClient().

client = redis.createClient(settings.redis.port, 
                            settings.redis.host, 
                            {no_ready_check: true});
if (settings.redis.password) {
  client.auth(settings.redis.password, function() {
    console.log('Redis client connected');
  });
}
Другие вопросы по тегам