Я разместил этот вопрос на Redis git hub, я обновлю обе стороны, если увижу какой-либо ответ.
Запуск C ++ на VisualStudio 2015, x64
Я заметил, что вызов get получаетпочти 2 секунды, чтобы вернуть значение.мой ключ «Контроль: 107: 1»;Я использую сервер Redis на моей локальной машине;он имеет около 200 ключей.
Я даже разобрал команду: redis_client-> get (key) .get (), чтобы я мог измерить время - вот мой код:
<...snip...>
cpp_redis::future_client* redis_client = new cpp_redis::future_client();
redis_client::connect(host, port, nullptr);
<...snip...>
string r;
auto startTime = std::chrono::steady_clock::now();
auto get = redis_client->get(key);
auto endTime = std::chrono::steady_clock::now();
__int64 iDiff2 = (std::chrono::duration_cast<std::chrono::microseconds>(endTime - startTime).count()) / 1000;
std::cout << "redis_client->get(" << key << ") " << iDiff2 << std::endl;
auto val = get.get();
auto endTime2 = std::chrono::steady_clock::now();
__int64 iDiff3 = (std::chrono::duration_cast<std::chrono::microseconds>(endTime2 - endTime).count()) / 1000;
std::cout << "get.get() " << iDiff3 << std::endl;
if (!val.is_null() && val.is_string())
{
auto startTime = std::chrono::steady_clock::now();
r = val.as_string();
auto endTime = std::chrono::steady_clock::now();
__int64 iDiff2 = (std::chrono::duration_cast<std::chrono::microseconds>(endTime - startTime).count()) / 1000;
std::cout << "val.as_string() " << iDiff2 << std::endl;
}
return r;
myрезультаты распечатки:
redis_client-> get (Управление: 107: 1) 0
get.get () 1939
val.as_string () 0
Я получаю аналогичные результаты, если ключ существует или нет.
(обратите внимание, что при печати измеренных микросекунд я делю на 1000, поэтому печать выполняется в миллисекундах!)
пожалуйстапомогите мне понять .... спасибо Миа