>  기사  >  백엔드 개발  >  Centos에서 Redis 및 공유 메모리(shm)에 대한 PHP 읽기 및 쓰기 효율성을 루프 테스트합니다.

Centos에서 Redis 및 공유 메모리(shm)에 대한 PHP 읽기 및 쓰기 효율성을 루프 테스트합니다.

不言
不言원래의
2018-07-06 15:44:292217검색

이 글에서는 Centos에서 Redis와 공유 메모리(shm)를 읽고 쓰는 루프 테스트의 효율성을 주로 소개합니다. 이제는 필요한 친구들이 참고할 수 있도록 공유합니다

redis. 또한 공유 메모리는 모두 메모리 데이터를 읽습니다. 누가 더 효율적인지 테스트하기 위해 Centos 가상 머신에서 공정한 테스트를 수행했습니다.

테스트 매개변수

환경: Centos(구성 무시), 언어: PHP, WebServer: 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 秒

결과 목록

레디스 읽음: 2.1초 쓰기: 1.7초

Shm 읽기: 0.0021초 쓰기: 0.0025초

효과가 매우 다르다는 것을 알 수 있습니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장 사항:

php는 공유 메모리 프로세스 통신 기능(_shm)을 구현합니다.

PHP 코드 자동 감지(git/svn 통합 PHP_CodeSniffer)

위 내용은 Centos에서 Redis 및 공유 메모리(shm)에 대한 PHP 읽기 및 쓰기 효율성을 루프 테스트합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.