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<a href='' target='_blank'>"m"</a>; ?>
高并发写的性能
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现在还是完善阶段,不建议现在在线上环境使用。
技术交流
原文链接:yac和memcache性能对比测试,转载请注明来源!
Yac和Memcached完全不在一个层面上,不能一起作比较
表示无语。。。什么都拿来比较,,说明无知。。