この記事では主に Centos 上で PHP による Redis と共有メモリ (shm) の読み書きループテストの効率を紹介します。一定の参考値があるので共有します。困っている友人は参考にしてください。
Redis、memcache、共有メモリはすべてメモリ データを読み取ります。どちらがより効率的かをテストするために、Centos 仮想マシンで公正なテストを実行しました。
テスト パラメーター
環境: Centos (構成は無視)、言語: PHP、Web サーバー: Nginx、テスト数: 10000、文字の種類と長さ: 文字列 (1024 )
準備テスト
<?php //测试数据 $arr = array( 1 => array ('id' => '4146','attacksdfdsfdsddddddddddd' => '5.45','atk_class' => '神圣级','wufang' => '4.9','def_class' => '超神级','cefang' => '4.9','mdf_class' => '超神级','hp' => '6.43','hp_class' => '神王级','dodge' => '55','dodge_class' => 'SSSS','crit' => '50','crit_class' => 'SSS','penetrate' => '55','penetrate_class' => 'SSSS','mingzhong' => '51','hit_class' => 'SSSS','anti_dizziness' => '0','anti_dizzinesssdfdsfdsfdsfdsfds_class' => 'F','anti_critical' => '20','anti_critical_class' => 'F','tenacity' => '0','tenacity_class' => 'F', ), 2 => array ('id' => '414ddffff7','attack' => '5.45','atk_class' => '神圣级','wufang' => '4.95','def_class' => '超神级','cefang' => '4.95','mdf_class' => '超神级','hp' => '6.43','hp_class' => '神王级','dodge' => '55','dodge_class' => 'SSSS','crit' => '50','crit_class' => 'SSS','penetrate' => '55','penetrate_class' => 'SSSS','mingzhong' => '51','hit_class' => 'SSSS','anti_dizziness' => '0','anti_dizziness_clsdfdsfdsfdsfdsfdsass' => 'F','anti_critical' => '20','anti_critical_class' => 'F','tenacity' => '0','tenacity_class' => 'F', )); $str = json_encode($arr); echo strlen($str); //输出1024
redis で 10,000 回の書き込みテストを実施
<?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $redis->auth('310c8cabcdefghf2d8abcdefd44496ac80'); $start = microtime(true) ; for($i = 0; $i<10000; $i++) { $redis->set('key', $str); } echo microtime(true) - $start; //执行5次,大概平均结果为 1.7016470432281 秒
共有メモリ (shm) で 10,000 回の書き込みテストを実施
<?php $key = 0x4337b123; $size = 1024; $shmid = @shmop_open($key, 'c', 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('127.0.0.1',6379); $redis->auth('310c8cabcdefghf2d8abcdefd44496ac80'); $start = microtime(true) ; for($i = 0; $i<10000; $i++) { $redis->get('key'); } echo microtime(true) - $start; //执行5次,大概平均结果为 2.1236310005188 秒
共有メモリ (shm) で 10,000 件の読み取りテストを実施
<?php $key = 0x4337b123; $size = 1024; $shmid = @shmop_open($key, 'c', 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 サイトの他の関連記事を参照してください。