最近在3个项目中都有用到memcache,这东东确实有出人意料的上佳表现,优点不少。
- 稳定,几个月以来,一同装上去的apache已重启过多次,这期间memcache一直踏踏实实干活,一点都不需要中途加油。
- 配置简单,那是相当的简单,几乎不用配置,一个命令行的守护进程跑下来,就可以不管了
- 多机分布式存储,每个前端机都能匀出一些内存来跑memcache,这些内存加在一起,总大小也是相当的客观,能够应付足够多的缓存数据,如果开启了memcache的压缩选项MEMCACHE_COMPRESSED,存储量还能有进一步提升。
- 速度快,这个论点需要数据支持,俺手头之前有一些不同数据量级下set/get的速度对比,但是这里不方便列出来
以上,俺认为memcache是前端缓存一个漂亮的解决方案
13 responses to “使用memcache的几个优点”
单机状态下memcache的速度并不快,因为每次都要建立连接,如果不考虑分布式,还是用xcache之类的速度更快。
单机下memcache没有太大的优势:)但是利于扩展
两位都有误解,
当php大量访问数据库对数读操作时,应用memcache会减少数据库的访问次数,大大提升php和数据库的运行效率,
而xcache只是用来减少php重新编译的次数以减少系统资源的占用。
两个软件应用的层次不一样。
xcache不仅仅有着opcode的缓存功能,还提供了一些api用来保存php的变量,如下:
我想david应该说的就是这类功能吧。我个人有在高负载的场合使用memcache来缓存db layer的东东,还有apc缓存php opcdoe,但是还没机会尝试xcache在这种场合下的性能,所以有待试验。
其实APC的功能比xcache强大一点,不仅有opcode级的缓存,还有类似memcache的数据/变量缓存,像 apc_store, apc_fetch 之类的接口做这些事情,也能够控制包括数据的有效时间等,不过一般适合缓存存储周期长,数据量小的数据。memcached比这个要强大的多,把apc和memcached结合使用是最好的。
apc拿来做opcode缓存还是不错的,至于数据缓存,老实说,不是太放心。
错过了很多精彩讨论
关于xcache的性能测试,可以参考这个,可能配置上不是很正确,所以导致测试结果有失准确。
http://www.fcicq.net/wp/?p=319
另外,我在试用xcache,却不知道怎么用它的api,以前测试过eacc的api,结果是不能用,可以写入,但无法读出,读的时候apache会挂掉,在两台服务器上测试结果均是如此。
我有点偏执,对于要求性能,却不需要集群的功能,我感觉memcache太慢,甚至不如直接的io操作。主要是socket链接的速度慢。因为我自己尝试写守护进程来完成一些后台操作,发现用socket链接守护进程效率不如直接io操作。
另外,xcache是国人参与开发的项目,也有很多不错的评价,所以要支持一下:)
memcache有pconnect这个方法可以解决一点socket用时,另外一分支有tag_add/tag_delete两个方法,可以实现的功能更多了,xcache个人感觉比apc或其它同类本地cache效率要高~
看一些文章说xcache是可以和zend optimizer同时生效的,而apc不能,不过我疑惑的是xcache + zend optimizer和apc到底哪个效率更高一点呢?这个有待测试。
至于memcache,它和xcache应用场景很不一样,所以不用比个孰优孰劣。
APC和memcache可以共存不?如果是单机的话选择哪种缓存方式好些?
显然可以共存。从速度上来说, apc > memcache,单机用前者即可。