我只是意识到
redis-benchmark命令没有基准
hSet和
hGet命令。(我正在使用v2.8.5)
您可以做的是编写一个小程序来对性能进行基准测试:
<?php$redis = new Redis();$redis->pconnect("127.0.0.1");$count = 10000;$start_t = microtime(true);for ($i = 1; $i < $count; $i++) { $redis->hSet("h{$i}", 'f', $i);}$end_t = microtime(true);echo "Time taken for hSet = " . round(1000 * ($end_t - $start_t)) . "ms (for " . number_format($count) . " keys)n";$start_t = microtime(true);$pipeline1 = $redis->pipeline();for ($i = 1; $i < $count; $i++) { $pipeline1->hSet("h{$i}", 'f', $i);}$result2 = $pipeline1->exec();$end_t = microtime(true);echo "Time taken for hSet (bulk) = " . round(1000 * ($end_t - $start_t)) . "ms (for " . number_format($count) . " keys)n";$start_t = microtime(true);for ($i = 1; $i < $count; $i++) { $redis->hGet("h{$i}", 'f');}$end_t = microtime(true);echo "Time taken for hGet = " . round(1000 * ($end_t - $start_t)) . "ms (for " . number_format($count) . " keys)n";$start_t = microtime(true);$pipeline2 = $redis->pipeline();for ($i = 1; $i < $count; $i++) { $pipeline2->hGet("h{$i}", 'f');}$result2 = $pipeline2->exec();$end_t = microtime(true);echo "Time taken for hGet (bulk) = " . round(1000 * ($end_t - $start_t)) . "ms (for " . number_format($count) . " keys)n";$start_t = microtime(true);$pipeline3 = $redis->pipeline();for ($i = 1; $i < $count; $i++) { $pipeline3->hDel("h{$i}", 'f');}$result3 = $pipeline3->exec();$end_t = microtime(true);echo "Time taken for hDel (bulk) = " . round(1000 * ($end_t - $start_t)) . "ms (for " . number_format($count) . " keys)n";在我的测试服务器上,结果如下:
$ php redis/benchmark_redis.php Time taken for hSet = 557ms (for 10,000 keys)Time taken for hSet (bulk) = 51ms (for 10,000 keys) Time taken for hGet =483ms (for 10,000 keys) Time taken for hGet (bulk) = 43ms (for 10,000 keys)Time taken for hDel (bulk) = 49ms (for 10,000 keys)



