当前位置: 首页 > 知识库问答 >
问题:

redis_client::需要超过一秒钟的时间来回复

督嘉言
2023-03-14

我在Redis git hub上发布了这个问题,如果我看到任何回复,我会更新双方。

在VisualStudio 2015和x64上运行C

我注意到调用“get”几乎需要2秒钟才能返回一个值。我的钥匙是“控制:107:1”;我在本地机器上运行Redis服务器;它有大约200把钥匙。

我甚至解构了这个命令:redis_客户端-

<...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-

收到1939年

val.as_string()0

无论密钥是否存在,我都会得到类似的结果。

(请注意,当我打印测量的微秒时,我除以1000,所以打印是以毫秒为单位的!)

请帮我理解。。。。谢谢你,米娅

共有2个答案

阎劲
2023-03-14

尝试使用bredis(免责声明:我是它的作者):它不使用官方的redis解析器(hiredislibrary),这就是为什么它在Windows上可以完美编译。它依赖于boost(boost::asio)库,它在Windows上也可以正常工作。

章哲彦
2023-03-14

一句话:我的Redis服务器版本非常旧。在更新的版本中,我经历了更好的“获取”时间,正如你在Tomasz Poradowski在评论中指出的细节所示

我希望有人(也许复活MS OpenTech?)恢复对Redis服务器高级版本的Windows支持。

 类似资料:
  • 问题内容: 我正在一个数据库很大的网站上工作。当时表中有1百万条记录。当我执行查询时,这将花费太多时间来执行。以下是一个示例查询: 每个查询都需要一分钟以上的时间,但是当我将表放到1万条记录中时,该查询就会快速执行。 正如我所读过的,在一个表中有一百万条记录没有问题,因为在数据库表中没有大记录的问题。 我已经通过堆栈溢出问题在表中使用了ID索引, 如何向MySQL表添加索引? ,但仍然有同样的问题

  • 我只需要小时,分钟和秒的倒计时,我在谷歌上搜索其他的js,但没有找到我要找的。 我不需要几天。

  • 问题内容: 我正在编写一个Web应用程序,我需要将图像从servlet发送到客户端。图像是动态生成的,并且很大(+ -2MB)。可能是jpeg,png或gif。 现在,我正在使用ImageIO.write()将图像写入输出流,但是其速度很慢。客户最多需要6秒钟才能看到图像。我需要加快速度。 有什么建议? 顺便说一句 我知道正在寻找ImageIO主题的更快替代方案。但这并没有帮助我。由于使用PNG的

  • 我正在开发一个Spring boot应用程序,当响应时间超过30秒时,我必须抛出一个错误。 因为我正在使用应用程序。yml,我试过了 因为它不工作,尝试使用application.properties-. it不工作。 试图找出如何在这两种情况下抛出系统错误。即当系统空闲后发生超时且响应时间超过30秒时

  • 2013/04/22 12:35:56[错误]2709#0:*1从上游读取响应标头时上游超时(110:连接超时),客户端:xx.xx.xx.xx,服务器:,请求:“get/entity/datasenders/http/1.1”,上游:“uwsgi://127.0.0.1:9001”,主机:“xxx.xx.xx.x” 我已经设置了标题超时和uWSGI发送/读取超时5分钟,有人能告诉我我可以做什么来

  • 我正在编写一个非常基本的油漆应用程序。 我的应用程序有一个图像,当我触摸任何地方时,这个地方会填充一种颜色。 我使用洪水填充算法(http://en.wikipedia.org/wiki/Flood_fill),特别是第二种替代实现方法。 我使用像素图来更新纹理。 这在我的电脑上运行得很好,问题是在我的android(分辨率为720p的摩托罗拉moto G,android 4.4)上执行应用程序时