2009-05-02 43 views
152

我读过这篇文章:http://www.mysqlperformanceblog.com/2006/09/27/apc-or-memcached/回来的时候..我想得到最好的缓存引擎,使我的应用程序真的很快。当然,我不想过度缓存,但我想至少选择那里最好的东西。在那篇文章中,它说Memcached速度很慢,apc速度很快,为什么大家都选择memcachedMemcached vs APC哪一个我应该选择?

http://framework.zend.com/manual/en/zend.cache.backends.html#zend.cache.backends.twolevels这里说的是“使用像Apc,Memcache这样的快速(但有限)...和像File,Sqlite这样的”慢速“...”你认为使用Apc作为快速,Memcache作为慢是个好主意?

+14

顺便说一句:即使你不使用`apc_store`,你也应该使用APC。仅操作码缓存使PHP快几倍。 – Kornel 2010-10-14 09:52:55

+0

@porneL:你是什么意思?即使我没有添加代码来缓存脚本中的任何内容,APC是否会在安装后提高PHP速度? – 2012-04-02 11:30:32

+5

@Marco Demaio:确实。 APC主要是一个PHP优化器(只要启用它就默认优化),而`apc_store()`只是一个额外的奖励。 2014年的 – Kornel 2012-04-02 21:16:20

回答

40

Memcached如果您需要跨多个Web服务器保持状态(如果负载均衡,并且重要的是缓存中的内容对于所有服务器都是相同的)。

APC如果您只是需要访问快速内存以在(或每个)服务器上读取(&写入)。

记住APC也可以编译和加快脚本执行时间。因此,您可以使用APC提高执行性能,同时使用memcached进行缓存存储。

253

Memcached是一个分布式缓存系统,而APC是非分布式的 - 主要是操作码缓存。

如果(且只有)您有一个必须在不同webservers(负载平衡)上运行的Web应用程序,则必须使用memcache进行分布式缓存。 如果不是,只需坚持APC及其缓存。

你应该总是使用一个操作码缓存,这个APC是(也将APC集成到php6 iirc中,所以为什么不现在开始使用它)。

您可以/应该将两者用于不同的目的。

5

嘿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的开发商,我认为一个)

8

我同时使用一个速度和其他对我的所有服务器同步。如果你确实使用了memcache,那么请记住你需要用iptables阻塞的开放端口。

1

我只使用APC,因为APC是一个代码缓存并且像memcache一样操作!只有1个配置文件,而不是2

,只有1处同时监视缓存.....

1

这取决于你在做什么,但我在VPS运行Drupal的网站,我发现APC的伟大工程!如果你正在运行CentOS 6,它可以作为yum更新使用,因此安装非常简单,并且没有配置,因为默认设置是合理的。没有理智的imho。

15

APC的主要优点是操作码缓存。由于PHP5.5将OpCache集成到了它的核心,而PHP5.4的APC仍然被标记为beta,所以它不是正式的通告,但是APC的开发将在不久的将来被取消。

所以我建议你选择Memcached。

相关问题