redis和memcache还有共享内存都是读取内存的数据,为了测试一下到底效率谁更胜一筹,我在我的Centos虚拟机下做了一次公平的测试。
测试参数
环境:Centos (配置忽略)、语言:PHP、WebServer:Nginx、测试次数:10000、字符类型及长度:字符串(1024)
准备测试
?php//测试数据$arr = array( 1 = array ( id = 4146 , attacksdfdsfdsddddddddddd = 5.45 , atk_html' target='_blank'>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进行10000次写入测试
?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)进行10000次写入测试
?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进行10000次读测试
?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)进行10000次读测试
?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 !
相关推荐:
php实现共享内存进程通信函数(_shm)
PHP代码自动检测(git/svn集成PHP_CodeSniffer)
以上就是Centos下循环测试php对Redis和共享内存(shm)读写的效率的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答