我在Redis git hub上发布了这个问题,如果我看到任何回复,我会更新双方。
在VisualStudio 2015上运行C ++,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;
我的结果打印是:
redis_client-&gt; get(控制:107:1)0
get.get()1939
val.as_string()0
我得到了类似的结果 密钥是否存在。
(请注意,当我打印测量的微秒时,除以1000,因此打印时间为毫秒!)
请帮我理解.... 谢谢 米亚
答案 0 :(得分:0)
底线: 我的Redis服务器版本很旧。 对于更新版本,我经历了更好的“获取”时间,正如您在Tomasz Poradowski在评论中所指出的细节中所看到的那样
我希望有人(可能会复活MS OpenTech?)恢复对Redis服务器高级版本的Windows支持。
答案 1 :(得分:0)
尝试使用bredis:它不使用官方的redis解析器(hiredis
库),这就是为什么它可以在Windows上完美编译的原因。它取决于boost(boost::asio
)库,该库在Windows上也可以正常工作。