Я использую библиотеку Hiredis C для подключения к моему экземпляру Redis. Я рассматриваю возможность изменения моего redis.conf, чтобы включить опцию requirepass
. Я знаю, что для redisConnect()
я просто подключаюсь к хосту/порту без аутентификации, а затем отправляю команду AUTH mypassword
, используя redisCommand()
и контекст. Однако как это сделать для redisAsyncConnect()
? Глядя на исходный код, функция redisAsyncCommand()
не работает, когда ее просят отправить команду AUTH mypassword
.
наймите асинхронное соединение с паролем
Ответы (1)
Я ошибся в анализе работы функции redisAsyncConnect()
. Следующий код работает, с той лишь оговоркой, что вы не знаете, успешно ли выполнена команда AUTH
:
redisAsyncContext *async_context = redisAsyncConnect(redis_info.host, redis_info.port);
if (async_context->err)
{
throw std::runtime_error("Error creating async_context: " + async_context->errstr);
}
if (0 != strlen(redis_info.passwd))
{
if (REDIS_OK != redisAsyncCommand(async_context, NULL, NULL, "AUTH %s", redis_info.passwd))
{
throw std::runtime_error("Error sending AUTH in async_context");
}
}
person
Paul Grinberg
schedule
26.11.2019