Redis + Redis将密钥设置为服务器并提交多长时间

时间:2018-10-24 13:37:34

标签: redis

我想测量从发出Redis unordered_map命令到服务器实际提交密钥所经过的时间。

有没有办法测量?

2 个答案:

答案 0 :(得分:0)

Redis的

INFO命令将列出您要查找的统计信息,特别是命令 INFO Stats 获得了 instantaneous_ops_per_sec ,这是redis在最后一秒处理的命令数。

这将帮助您估计Redis Instance花费的时间。

答案 1 :(得分:0)

处理命令有很多部分。首先,您通过网络将其从客户端发送到服务器,然后服务器上的TCP Worker读取客户端缓冲区,处理一条消息并将其放入命令队列,然后最终Redis主循环从队列中弹出命令,对其进行处理(当此部分结束时,将提交密钥),然后将答案写入客户端缓冲区,然后最终TCP工作者发现已经准备好答案,并通过电线将其发送给客户端。在99%的情况下,大部分时间都是通过电汇发送。

您建议的度量标准-从发出命令到提交密钥是很难衡量的,仅因为这些事件发生在不同的方面。但更重要的是,您不必测量它。在此类系统中衡量的两个主要指标是:

  • 延迟(从发送命令到接收答案)
  • 吞吐量(在一个时间间隔内,通常在一秒内,来自不同客户端的服务器可以处理多少个命令)

如果出于某种原因坚持测量,则可以执行以下操作:

  1. 确保服务器和客户端计算机的时间完全同步。 Redis速度很快,因此规模甚至可以达到纳米级。
  2. 呼叫前将当前时间保存在客户端中(例如Java中的long start = System.nanoTime();
  3. 呼叫未设置,但lua脚本:eval "redis.call('set','my_key','3,1415') return redis.call('time')" 0
  4. 在客户端上,减去从您收到答复开始的时间。您将需要处理输出格式的差异,Redis提供了微秒级的精度。
  5. 执行多次以获取稳定的结果。您会得到一个较慢的结果,因为会花费一些时间在lua脚本上,甚至是在测量时间上。