1.c_str
c_str()返回的是一个临时指针
用法:
string redis_cmd = "GET " + redis_key;
result = _rd_client.exec_command(redis_cmd.c_str());
//exec_command定义
redisReply* redis_client::exec_command(const char *cmd) {
return exec_command_with_args(cmd);
}
2.多次请求redis操作
const int TIME_WAIT = 100000; //100 ms
string redis_cmd = "GET " + redis_key;
UB_LOG_TRACE("read output redis command: %s", redis_cmd.c_str());
for (unsigned int i = 1; i <= pay_define::MAX_RETRY_TIMES; i++)
{
try
{
redisReply* result = NULL;
result = _rd_client.exec_command(redis_cmd.c_str());
if (!result)
{
UB_LOG_WARNING("get output from redis result is null");
usleep(TIME_WAIT);
continue;
}
if (result->type != REDIS_REPLY_STRING)
{
if (result->type == REDIS_REPLY_ERROR)
{
UB_LOG_WARNING("get output from redis result error");
}
else if (result->type == REDIS_REPLY_NIL)
{
UB_LOG_WARNING("get output from redis result is empty");
}
freeReplyObject(result);
usleep(TIME_WAIT);
continue;
}
//copy redis value to out_pack
mc_pack_t * pOutput = const_cast<yapserver::mc_pack_writer&>(out_pack);
memcpy((void*)pOutput, result->str, result->len);
3.
原文:https://www.cnblogs.com/liuweiweitju/p/14473591.html