我从这篇文章中读到了这篇文章:http://www.mysqlperformanceblog.com/2006/09/27/apc-or-memcached/ ..我希望得到最好的缓存引擎,以便我的应用程序非常快。当然我不想过度缓存,但我想至少选择最好的东西。在那篇文章中它说Memcached很慢而且apc很快所以为什么每个人都选择memcached?
http://framework.zend.com/manual/en/zend.cache.backends.html#zend.cache.backends.twolevels这里说的是“使用一个快速的(但有限的)像Apc,Memcache ......和一个像文件,Sqlite这样的”慢“...你认为使用Apc作为快速和Memcache作为慢是一个好主意?
答案 0 :(得分:262)
Memcached是一个分布式缓存系统,而APC是非分布式的 - 主要是操作码缓存。
如果(并且仅当)您的Web应用程序必须存在于不同的Web服务器(负载平衡)上,您必须使用memcache进行分布式缓存。 如果没有,只需坚持使用APC及其缓存。
你应该总是使用APC的操作码缓存(APC也会集成到php6 iirc中,所以为什么不立即开始使用它。)
您可以/应该将它们用于不同目的。
答案 1 :(得分:42)
Memcached,如果您需要在多个Web服务器上保留状态(如果您负载均衡,并且重要的是缓存中的内容对于所有服务器都是相同的。)
APC,如果您只需要访问快速内存以在(或每个)服务器上读取(和写入)。
请记住,APC还可以编译并加快脚本执行时间。因此,您可以使用APC来提高执行性能,同时使用memcached进行缓存存储。
答案 2 :(得分:17)
APC的主要优点是操作码缓存。由于PHP 5.5将OpCache集成到其核心,而用于PHP 5.4的APC仍被标记为测试版,因此它不是官方公告,但APC的开发将在不久的将来被删除。
所以我建议你选择Memcached。
答案 3 :(得分:9)
我使用一个用于速度,另一个用于同步我的所有服务器。如果你确实使用了memcache,那么请记住你需要用iptables阻止的开放端口。
答案 4 :(得分:6)
Hey Thomaschaaf,我希望这对你来说不是迟到的工具,但请注意APC有一些与“用户缓存”有关的问题。总而言之,当您为缓存条目设置超时时,或者如果您的apache在内部APC代码内崩溃(例如,超时),那么您可能会遇到一些问题。
我在这里有一个关于这个问题的条目:http://nirlevy.blogspot.com/2009/06/apc-futexwait-lockdown-make-your-apache.html,您还应该阅读http://t3.dotgnu.info/blog/php/user-cache-timebomb.html(我认为是其中一位APC开发人员)
答案 5 :(得分:1)
我只使用APC,因为APC是一个代码缓存,就像memcache一样!只有1个配置文件而不是2个。
只有一个地方可以监控两个缓存.....
答案 6 :(得分:1)
这取决于你在做什么,但对于在VPS上运行的drupal网站,我发现APC效果很好!如果您运行的是CentOS 6,它可以作为yum更新使用,因此安装简单且没有配置,因为默认值是合理的。一个没脑子的人。