这似乎应该是微不足道的,但我想通过redis-cli运行一个查询,然后回顾它在服务器上花了多长时间以及结果.这仅用于调试目的,以解决客户端库或延迟问题.有没有办法做到这一点?
Ada*_* V. 11
您可以通过将正在调查的redis命令包装在一个MULTI/EXEC块中来执行此操作,该命令在TIME命令之前和之后使用.例如:
使用节点库:
var multi = redis.multi();
multi.time(); // start time
multi.sunionstore(['fast_food_joints', 'pizza_hut', 'taco_bell']); // this is the command I'm investigating
multi.time(); // end time
multi.exec(function(err, responses){
var response = responses[1]; // the response i care about
var start = (parseInt(responses[0][0]) * 1000) + (parseInt(responses[0][1]) / 1000);
var end = (parseInt(responses[2][0]) * 1000) + (parseInt(responses[2][1]) / 1000);
var execution_time = end - start; // in milliseconds
});
Run Code Online (Sandbox Code Playgroud)
或者......使用命令行(这是你在问题中要求的):
192.168.1.1:6379> MULTI
OK
192.168.1.1:6379> TIME
QUEUED
192.168.1.1:6379> SUNIONSTORE fast_food_joints pizza_hut taco_bell
QUEUED
192.168.1.1:6379> TIME
QUEUED
192.168.1.1:6379> EXEC
1) 1) "1450818240"
2) "666636"
2) (integer) 48886
3) 1) "1450818240"
2) "666639"
Run Code Online (Sandbox Code Playgroud)
然后自己做数学.上面的例子需要3微秒.
您可以将慢日志设置为 0(零)。这样做会记录每个命令。
您将看到的时间以微秒为单位,从文档来看,这个时间意味着:
执行时间不包括与客户端对话、发送回复等 I/O 操作,而只是实际执行命令所需的时间(这是命令执行过程中线程被阻塞且可以执行的唯一阶段)在此期间不满足其他请求)
为了考虑网络性能,您可能必须破解您的客户端库,在与 Redis 通信之前和之后进行日志记录,忽略您的库可能执行的任何转换。
| 归档时间: |
|
| 查看次数: |
3262 次 |
| 最近记录: |