Cloud Redis延迟原因(与Macbook Pro上的本地Redis)

时间:2018-12-31 12:34:31

标签: amazon-web-services redis cloud heroku-redis

Redis可以给出亚毫秒级的响应时间。这是一个很大的希望。我正在测试heroku redis,对于1ms,我得到的8ms最多约为zincrby。我在php中使用microtime()来包装通话。这个heroku redis(我使用的是免费计划)是一个共享实例,并且存在资源争用,因此我希望相同查询的响应时间会有所不同,而且确实如此。

我很好奇通过自制软件在Macbook Pro上安装的性能与Redis的性能差异的原因。那里显然没有网络延迟。我很好奇的是,这是否意味着与我拥有一台云服务器并在内部运行redis相比,任何云redis(即通过网络连接,例如在AWS中)总是会慢很多。同一台物理计算机,从而消除了网络延迟?

这些云产品中也存在资源争用,除非选择了价格昂贵的私有服务器。

一些数字:我的本地macbook pro始终为heroku redis上的0.2mszincrby之间的相同1ms提供8ms

造成网络延迟的原因吗?

1 个答案:

答案 0 :(得分:1)

不,可能不是。

1 Gbit / s网络的典型延迟大约为200us。那是0.2ms

此外,在aws中,您的速度可能至少为10Gbps。

正如redis手册中的this page所述,这两个环境之间的延迟变化的主要原因几乎可以肯定是intrinsic latency较高的结果(有一个redis命令可以在任何特定系统:redis-cli --intrinsic-latency 100,请参见上面的手册页)是由于在Linux容器中运行而产生的

即,网络延迟不是导致此处所示变化的主要原因。

这是清单(来自上面链接的redis手册页)。

  
      
  • 如果可以负担得起的话,请选择一台物理机而不是VM来托管服务器。
  •   
  • 请勿系统地连接/断开与服务器的连接(对于基于Web的应用程序尤其如此)。保持联系长久   尽可能。
  •   
  • 如果您的客户端与服务器位于同一主机上,请使用Unix域套接字。
  •   
  • 首选在管道上使用聚合命令(MSET / MGET)或带有可变参数的命令(如果可能)。
  •   
  • 如果可能的话,优先使用流水线处理。
  •   
  • Redis支持Lua服务器端脚本来覆盖不适合原始流水线的情况(例如,当命令的结果时   是以下命令的输入)。
  •