热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

phpyac缓存如何清理,yac和memcache性能对比测试

yac是Laruence开发的一个php进程共享内存的开源项目。详情可以查看。http:www.laruence.com201303182846.htmlmemcache就不用多说

yac是Laruence开发的一个php进程共享内存的开源项目。详情可以查看。http://www.laruence.com/2013/03/18/2846.html

memcache就不用多说了,如果你不知道拿说明你不是个真正的程序猿。

从应用场景来说,yac相当于本地的memcache,即php程序和memcache搭建在一台服务器上。如果本机的php进程间想共享数据,可以使用yac或者memcache。那么这两个东东那个性能更好呢?今天做了下性能测试。

测试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现在还是完善阶段,不建议现在在线上环境使用。

技术交流

42e1274b8af00aa6b98a5ce9d1810905.gif



推荐阅读
  • 首先讲一下Memcache和Memcached。为什么会有Memcache和Memcached两种名称呢?其实Memcache是这个项目的名称,而Memcached是它服务器端的主 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 一,织梦后台后台设置进入系统后台,在[系统基本参数]下面的性能选项卡当中,关于memcache进行如下配置:cfg_memcache_enable:是否启用memcache缓存,如果为否(N) ... [详细]
  • 一、NoSQL数据库简介Web1.0的时代,数据访问量很有限,用一夫当关的高性能的单点服务器可以解决大部分问题。随着Web2.0的时代的到来,用户访问量大幅度提升,同时产生了大量的 ... [详细]
  • C1、缓存的意义说到分布式系统基本上就离不开缓存,在高并发,大流量的场景下缓存更是扮演着重要的角色。所以作为一个分布式系统的开发人员是必须熟练掌握缓存的使用与设计。下面是一张简单的 ... [详细]
  • 前言这篇文章是个人对后端工程师的面试复习点总结,不求面面俱到,只求发挥实效。你也可将你面试时遇到的值得记录下来的问题发给我,丰富这篇文章& ... [详细]
  • 1.Memcached帮助信息[rootnn~]#memcached-h2.启动参数说明-d:启动一个守护进程,以守护程序 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 我是做产品的,自己平时也做点技术,不过在职业技术人员面前都是不值一提的东西,为了方便以后查阅,索性用DZ搭了个论坛,把网上的一些教程,自己重新编辑后,存在了论坛上。积累技术经验之余,也发现了不 ... [详细]
  • 几周前,我参加了ThoughtWorks技术雷达研讨会。我在ThoughtWorks工作了多年,想想是否有人知道这些人在软件开发方面的发展趋势。在技​​ ... [详细]
author-avatar
紫藤老君的八卦炉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有