hiredis 使用密码异步连接
hiredis async connect with password
我正在使用 hiredis C library 连接到我的 redis 实例。我正在考虑更改 redis.conf 以启用 requirepass
选项。我知道对于 redisConnect()
我只是在没有身份验证的情况下连接到 host/port,然后使用 redisCommand()
和上下文发送 AUTH mypassword
命令。但是,如何为 redisAsyncConnect()
做到这一点?查看源代码,当要求发送 AUTH mypassword
命令时,redisAsyncCommand()
函数将失败。
我对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");
}
}
我正在使用 hiredis C library 连接到我的 redis 实例。我正在考虑更改 redis.conf 以启用 requirepass
选项。我知道对于 redisConnect()
我只是在没有身份验证的情况下连接到 host/port,然后使用 redisCommand()
和上下文发送 AUTH mypassword
命令。但是,如何为 redisAsyncConnect()
做到这一点?查看源代码,当要求发送 AUTH mypassword
命令时,redisAsyncCommand()
函数将失败。
我对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");
}
}