使用php脚本进行Redis延迟测量

时间:2014-08-20 09:03:16

标签: php redis latency predis

请原谅我提出这个基本问题。

我在本地的ubuntu机器上安装了redis和predis(客户端库)。现在,我在我的PHP脚本中进行某些SET / GET操作。我只想知道如何“精确计算”redis服务器完成“SET”或“GET”操作所花费的时间。 redis-cli --latency为您提供平均值,但实际上并未列出任何操作所需的个人时间。

我的目标是执行大约100条这样的指令,并找出每条指令执行的平均时间。

非常欢迎任何建议。

这是我的php客户端脚本:

<html>
<body>
<?php
require __DIR__.'/predis/src/Autoloader.php';
Predis\Autoloader::register();
// since we connect to default setting localhost
// and 6379 port there is no need for extra
// configuration. If not then you can specify the
// scheme, host and port to connect as an array
// to the constructor.
try {
$redis = new Predis\Client();
//$redis = new PredisClient();
/*
$redis = new PredisClient(array(
"scheme" => "tcp",
"host" => "127.0.0.1",
"port" => 6379));
*/

echo "<br />Successfully connected to Redis<br />";
//$redis->set("hello_world", "Hi from php!");
//$value = $redis->get("hello_world");

$sum = 0;
$time_start = microtime(true);
echo "<br />Start Time: $time_start";
$c = $redis->hset("taxi_car1", "brand", "Toyota");
$time_stop = microtime(true);

echo "<br /> Time taken for this instruction:".($time_stop-$time_start)*1000;
$sum += ($time_stop-$time_start)*1000;

$time_start = microtime(true);
$redis->hset("taxi_car1", "model", "Corolla");
$time_stop = microtime(true);
echo "<br /> Time taken for this instruction:".($time_stop-$time_start)*1000;
$sum += ($time_stop-$time_start)*1000;

echo "<br />Stop Time: $time_stop<br />";
echo "Average Time Taken: ".($sum/2);

//var_dump($value);
//echo "<br />$value<br />"; 
echo ($redis->exists("Santa Claus")) ? "true" : "false";
}
catch (Exception $e) {
echo "Couldn't connected to Redis";
}
?>

我知道这不是一个正确的方法。如果有人可以建议一个正确的方法来计算这个平均延迟,那会很好。我最终计划将其扩展到分布式系统。

提前致谢。

更新

我尝试启用慢速日志来查看特定命令的执行时间。但是,当命令集稍大(比如100)时,则计算平均值。手动执行时间,成为一项繁琐的任务。我期待通过php脚本来实现。

1 个答案:

答案 0 :(得分:0)

您可以使用INFO commandstats。如果要重置统计信息,请运行CONFIG RESETSTAT