代码之家  ›  专栏  ›  技术社区  ›  mwal

云Redis延迟原因(与MacBook Pro上的本地Redis相比)

  •  -1
  • mwal  · 技术社区  · 5 年前

    redis可以提供亚毫秒的响应时间。这是个很好的承诺。我在测试Heroku Redis 1ms 大约 8ms ,对于 zincrby 是的。我在用 microtime() 在php中结束调用。这个heroku redis(我使用的是免费计划)是一个共享实例,并且存在资源争用,因此我希望相同查询的响应时间会有所不同,而且它们肯定会发生变化。

    我很好奇性能与通过自制安装在MacBook Pro上的Redis之间差异的原因。显然没有网络延迟。我好奇的是,这是否意味着任何云redis(即通过网络连接,比如在aws中连接)总是比在同一台物理机器上运行一个云服务器和redis慢得多,从而消除了网络延迟?

    在这些云产品中也存在资源争用,除非选择了成本更高的私有服务器。

    一些数字:我的本地macbook pro一直给出 0.2ms 相同的 津比 介于两者之间 千分之一秒 &安培 8毫秒 在赫鲁库雷迪斯。

    是网络延迟造成的吗?

    1 回复  |  直到 5 年前
        1
  •  1
  •   mwal    5 年前

    不,可能不是。

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

    此外,在aws中,您可能至少使用10gbps。

    作为 this page 在redis手册中解释到,这两个环境之间延迟变化的主要原因几乎肯定是 intrinsic latency (有一个redis命令可以在任何特定系统上测试: redis-cli --intrinsic-latency 100 ,请参阅上面的手册页) 在Linux容器中运行 是的。

    也就是说,网络延迟不是这里所看到的变化的主要原因。

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

    • 如果你能负担得起的话,更喜欢物理机而不是虚拟机来托管服务器。
    • 不要系统地连接/断开与服务器的连接(对于基于web的应用程序尤其如此)。让你的关系长久 尽可能的。
    • 如果客户端与服务器位于同一主机上,请使用Unix域套接字。
    • 更喜欢在流水线上使用聚合命令(mset/mget)或具有可变参数的命令(如果可能)。
    • 如果可能的话,更喜欢在往返路线上使用流水线。
    • redis支持lua服务器端脚本,以覆盖不适合原始管道的情况(例如,当命令的结果 是以下命令的输入)。