Home  >  Article  >  Backend Development  >  Loop test the efficiency of php reading and writing to Redis and shared memory (shm) under Centos

Loop test the efficiency of php reading and writing to Redis and shared memory (shm) under Centos

不言
不言Original
2018-07-06 15:44:292169browse

This article mainly introduces the efficiency of loop testing PHP's reading and writing of Redis and shared memory (shm) under Centos. It has certain reference value. Now I share it with you. Friends in need can refer to it

Redis, memcache and shared memory all read memory data. In order to test who is more efficient, I did a fair test under my Centos virtual machine.

Test parameters

Environment: Centos (configuration ignored), language: PHP, WebServer: Nginx, number of tests: 10000, character type and length: string (1024 )

Preparation test

<?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

Conduct 10,000 write tests on redis

<?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 秒

Conduct 10,000 write tests on shared memory (shm)

<?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 秒

Conduct 10,000 read tests on redis

<?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 秒

Conduct 10,000 read tests on shared memory (shm)

<?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 秒

Result list

Redis Read: 2.1 seconds Write: 1.7 seconds

Shm Read: 0.0021 seconds Write: 0.0025 seconds

It can be seen that the effect is very different.

The above is the entire content of this article. I hope it will be helpful to everyone's study. For more related content, please pay attention to the PHP Chinese website!

Related recommendations:

php implements shared memory process communication function (_shm)

PHP code automatic detection (git/ svn integrates PHP_CodeSniffer)

The above is the detailed content of Loop test the efficiency of php reading and writing to Redis and shared memory (shm) under Centos. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn