开发者社区> exinnet> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

yac和memcache性能对比测试

简介:
+关注继续查看

yac是Laruence开发的一个php进程共享内存的开源项目。详情可以查看。http://www.laruence.com/2013/03/18/2846.html
memcache就不用多说了,如果你不知道拿说明你不是个真正的程序猿。
从应用场景来说,yac相当于本地的memcache,即php程序和memcache搭建在一台服务器上。如果本机的php进程间想共享数据,可以使用yac或者memcache。那么这两个东东那个性能更好呢?今天做了下性能测试。

测试php脚本如下:


<?php
function test_memcache_set(){
    $mem = memcache_connect('127.0.0.1', 11211);
    $value = mt_rand();
    $res = memcache_set($mem, 'var_key', $value, false, 3000);
    var_dump($res);
    if (!$res) {
        header("HTTP/1.0 404 Not Found");
    }
}
 
function test_memcache_get(){
    $mem = memcache_connect('127.0.0.1', 11211);
    $res = memcache_get($mem, 'var_key');
    var_dump($res);
    if (!$res) {
        header("HTTP/1.0 404 Not Found");
    } else {
        echo $res;
    }
}
 
function test_yac_set(){
    $yac = new Yac();
    $value = mt_rand();
    $res = $yac->set('var_key', $value);
    var_dump($res);
    if (!$res) {
        header("HTTP/1.0 404 Not Found");
    }
}
 
function test_yac_get(){
    $yac = new Yac();
    $res = $yac->get('var_key');
    var_dump($res);
    if (!$res) {
        header("HTTP/1.0 404 Not Found");
    } else {
        echo $res;
    }
  
}
 
echo $_GET["m"]();
?>

高并发写的性能
ab -t 10 -c 100 http://10.32.232.129/test.php?m=test_memcache_set
Time per request: 372.394 [ms] (mean)
Time per request: 404.438 [ms] (mean)
Time per request: 401.829 [ms] (mean)

ab -t 10 -c 100 http://10.32.232.129/test.php?m=test_yac_set
Time per request: 196.878 [ms] (mean)
Time per request: 200.621 [ms] (mean)
Time per request: 255.070 [ms] (mean)

高并发读的性能
ab -t 10 -c 100 http://10.32.232.129/test.php?m=test_memcache_get
Time per request: 571.452 [ms] (mean)
Time per request: 571.066 [ms] (mean)
Time per request: 668.744 [ms] (mean)

ab -t 10 -c 100 http://10.32.232.129/test.php?m=test_yac_get
Time per request: 412.464 [ms] (mean)
Time per request: 404.469 [ms] (mean)
Time per request: 380.599 [ms] (mean)

高并发写的时候,同时读的性能
ab -t 30 -c 20 http://10.32.232.129/test.php?m=test_memcache_set
Time per request: 150.284 [ms] (mean)
Time per request: 153.413 [ms] (mean)

ab -t 10 -c 20 http://10.32.232.129/test.php?m=test_memcache_get
Time per request: 125.516 [ms] (mean)
Time per request: 122.119 [ms] (mean)

ab -t 30 -c 20 http://10.32.232.129/test.php?m=test_yac_set
Time per request: 85.494 [ms] (mean)
Time per request: 87.736 [ms] (mean)

ab -t 10 -c 20 http://10.32.232.129/test.php?m=test_yac_get
Complete requests: 1220
Failed requests: 829
(Connect: 0, Length: 829, Exceptions: 0)
Time per request: 164.116 [ms] (mean)

Complete requests: 1300
Failed requests: 809
(Connect: 0, Length: 809, Exceptions: 0)
Time per request: 154.907 [ms] (mean)

测试结论如下:
1.无论单独的并发写,还是单独的并发读,yac都比memcache好。
2.在并发写的同时,并发读。yac已经出现读取数据失败,基本到了不可用的地步。
因此,如果是php程序缓存数据在一台机器上时,并且写的并发不大,建议使用yac。初此之外建议使用memcache。
另外,yac现在还是完善阶段,不建议现在在线上环境使用。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Memcache分布式部署方案
  前言 应该是很久之前,我开始研究Memcache,写了一系列的学习心得,比如《Discuz!的Memcache缓存实现》等。
767 0
memcache
引用:http://www.itlearner.com/article/4326 1. 下载memcache的windows稳定版,解压放在c:memcached2. 在终端下输入 'c:memcachedmemcached.
489 0
zabbix memcache模板
一、在客户端 1、到/usr/loca/zabbix/conf/zabbix_agentd.conf里添加 UserParameter=memcached_stats[*],(echo stats; sleep 1) | telnet 127.
866 0
+关注
exinnet
淘宝技术专家
文章
问答
文章排行榜
最热
最新
相关电子书
更多
复杂PHP系统性能瓶颈排查及优化
立即下载
MySQL 5.7让优化更轻松
立即下载
MySQL5.7 让优化更轻松
立即下载