ホームページ >バックエンド開発 >PHPチュートリアル >Centos での Redis および共有メモリ (shm) への PHP の読み書きの効率をループ テストします。

Centos での Redis および共有メモリ (shm) への PHP の読み書きの効率をループ テストします。

不言
不言オリジナル
2018-07-06 15:44:292225ブラウズ

この記事では主に Centos 上で PHP による Redis と共有メモリ (shm) の読み書きループテストの効率を紹介します。一定の参考値があるので共有します。困っている友人は参考にしてください。

Redis、memcache、共有メモリはすべてメモリ データを読み取ります。どちらがより効率的かをテストするために、Centos 仮想マシンで公正なテストを実行しました。

テスト パラメーター

環境: Centos (構成は無視)、言語: PHP、Web サーバー: Nginx、テスト数: 10000、文字の種類と長さ: 文字列 (1024 )

準備テスト

<?php
//测试数据
$arr = array( 1 => 
  array (&#39;id&#39; => &#39;4146&#39;,&#39;attacksdfdsfdsddddddddddd&#39; => &#39;5.45&#39;,&#39;atk_class&#39; => &#39;神圣级&#39;,&#39;wufang&#39; => &#39;4.9&#39;,&#39;def_class&#39; => &#39;超神级&#39;,&#39;cefang&#39; => &#39;4.9&#39;,&#39;mdf_class&#39; => &#39;超神级&#39;,&#39;hp&#39; => &#39;6.43&#39;,&#39;hp_class&#39; => &#39;神王级&#39;,&#39;dodge&#39; => &#39;55&#39;,&#39;dodge_class&#39; => &#39;SSSS&#39;,&#39;crit&#39; => &#39;50&#39;,&#39;crit_class&#39; => &#39;SSS&#39;,&#39;penetrate&#39; => &#39;55&#39;,&#39;penetrate_class&#39; => &#39;SSSS&#39;,&#39;mingzhong&#39; => &#39;51&#39;,&#39;hit_class&#39; => &#39;SSSS&#39;,&#39;anti_dizziness&#39; => &#39;0&#39;,&#39;anti_dizzinesssdfdsfdsfdsfdsfds_class&#39; => &#39;F&#39;,&#39;anti_critical&#39; => &#39;20&#39;,&#39;anti_critical_class&#39; => &#39;F&#39;,&#39;tenacity&#39; => &#39;0&#39;,&#39;tenacity_class&#39; => &#39;F&#39;,
  ),
  2 => 
  array (&#39;id&#39; => &#39;414ddffff7&#39;,&#39;attack&#39; => &#39;5.45&#39;,&#39;atk_class&#39; => &#39;神圣级&#39;,&#39;wufang&#39; => &#39;4.95&#39;,&#39;def_class&#39; => &#39;超神级&#39;,&#39;cefang&#39; => &#39;4.95&#39;,&#39;mdf_class&#39; => &#39;超神级&#39;,&#39;hp&#39; => &#39;6.43&#39;,&#39;hp_class&#39; => &#39;神王级&#39;,&#39;dodge&#39; => &#39;55&#39;,&#39;dodge_class&#39; => &#39;SSSS&#39;,&#39;crit&#39; => &#39;50&#39;,&#39;crit_class&#39; => &#39;SSS&#39;,&#39;penetrate&#39; => &#39;55&#39;,&#39;penetrate_class&#39; => &#39;SSSS&#39;,&#39;mingzhong&#39; => &#39;51&#39;,&#39;hit_class&#39; => &#39;SSSS&#39;,&#39;anti_dizziness&#39; => &#39;0&#39;,&#39;anti_dizziness_clsdfdsfdsfdsfdsfdsass&#39; => &#39;F&#39;,&#39;anti_critical&#39; => &#39;20&#39;,&#39;anti_critical_class&#39; => &#39;F&#39;,&#39;tenacity&#39; => &#39;0&#39;,&#39;tenacity_class&#39; => &#39;F&#39;,
  ));

$str = json_encode($arr);
echo strlen($str);          //输出1024

redis で 10,000 回の書き込みテストを実施

<?php
$redis = new Redis();
$redis->connect(&#39;127.0.0.1&#39;,6379);
$redis->auth(&#39;310c8cabcdefghf2d8abcdefd44496ac80&#39;);
$start = microtime(true) ;

for($i = 0; $i<10000; $i++) {
    $redis->set(&#39;key&#39;, $str);
}
echo microtime(true) - $start;    //执行5次,大概平均结果为  1.7016470432281 秒

共有メモリ (shm) で 10,000 回の書き込みテストを実施

<?php
$key = 0x4337b123;  
$size = 1024;  
$shmid = @shmop_open($key, &#39;c&#39;, 0644, $size);  
$start = microtime(true);
for($i = 0; $i<10000; $i++) {
    shmop_write($shmid, $str, 0); 
}
@shmop_close($shmid);
echo microtime(true) - $start;  //执行5次,大概平均结果为 0.0025370121002197 秒

redis で 10,000 件の読み取りテストを実施

<?php
$redis = new Redis();
$redis->connect(&#39;127.0.0.1&#39;,6379);
$redis->auth(&#39;310c8cabcdefghf2d8abcdefd44496ac80&#39;);
$start = microtime(true) ;

for($i = 0; $i<10000; $i++) {
    $redis->get(&#39;key&#39;);
}
echo microtime(true) - $start;     //执行5次,大概平均结果为 2.1236310005188 秒

共有メモリ (shm) で 10,000 件の読み取りテストを実施

<?php
$key = 0x4337b123;  
$size = 1024;  
$shmid = @shmop_open($key, &#39;c&#39;, 0644, $size);  
$start = microtime(true);
for($i = 0; $i<10000; $i++) {
    shmop_read($shmid, 0,1024);
}
@shmop_close($shmid);
echo microtime(true) - $start;     //执行5次,大概平均结果为 0.0021078586578369 秒

結果リスト

#Redis 読み取り: 2.1秒 書き込み: 1.7 秒

Shm 読み取り: 0.0021 秒書き込み: 0.0025 秒

効果が大きく異なることがわかります。

上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

php は共有メモリ プロセス通信機能 (_shm) を実装します

PHP コード自動検出 (git/ svn は PHP_CodeSniffer を統合します)

以上がCentos での Redis および共有メモリ (shm) への PHP の読み書きの効率をループ テストします。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。