sql >> データベース >  >> NoSQL >> Redis

hgetおよびhsetコマンドのRedisベンチマーク

    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)



    1. マングースは`$set`フィールドではなくドキュメントを上書きします

    2. mongoシェルでドキュメントフィールドを表示するにはどうすればよいですか?

    3. MongoDB-クエリの結果を制限する

    4. MongoDB挿入パフォーマンスを改善する方法