LoginSignup
10
3

More than 5 years have passed since last update.

predisとredis extensionの速度を比較してみた。

Posted at

まえがき

phpでredisを使う場合、今まではextexsionを使っていたんだけどlaravelだとpredisを採用しているので簡単に性能を比較してみました。

サンプルコードは以下の通り

sample.php
<?php

$end_loop = 50000;

$ext = new redis();
$ext->connect('localhost');

include 'vendor/predis/predis/autoload.php';
$predis = new Predis\Client('tcp://127.0.0.1:6379');

$ext->set('hogehoge','fugafuga');

echo '--- get ---' . PHP_EOL;
// redis extension 読み込み
$start = microtime(true);
for($i=0;$i<$end_loop;$i++){
        $ext->get('hogehoge');
}
printf("phpredis %f\n",microtime(true) - $start);

// predis 読み込み
$start = microtime(true);
for($i=0;$i<$end_loop;$i++){
        $predis->get('hogehoge');
}
printf("predis   %f\n",microtime(true) - $start);


echo '--- set ---' . PHP_EOL;
// redis extension 書き込み
$start = microtime(true);
for($i=0;$i<$end_loop;$i++){
        $ext->set('hogehoge',12345);
}
printf("phpredis %f\n",microtime(true) - $start);

// predis 書き込み
$start = microtime(true);
for($i=0;$i<$end_loop;$i++){
        $predis->set('hogehoge',12345);
}
printf("predis   %f\n",microtime(true) - $start);


今のところの想定ではgetとsetが大半なのでこの二種類で検証。

結果

php-5.6.30でやってみた。

--- get ---
phpredis 7.943276
predis   11.579012
--- set ---
phpredis 9.351953
predis   11.512340

extensionの方が速いですね。

php-7.0.13でもやってみた。違うPCなのでphpのバージョン間の性能差は参考にはなりません

--- get ---
phpredis 0.560895
predis   1.281387
--- set ---
phpredis 0.580832
predis   1.239677

やっぱりextensionの方が速いですね(倍以上でてる)。

まとめ

結論としてはextensionの方が高速でphp-7での性能差は顕著でした。とは言ってのphpの場合ライブラリの性能がネックになることはあまりなさそうなので使いやすい方でいいかと思います。

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3