Memcached vs APC我应该选择哪一个?

Tho*_*aaf 160 php memcached caching apc

我读了这篇文章: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 ......和a "慢"一个像File,Sqlite ......"你认为使用Apc作为快速和Memcache,因为慢是一个好主意?

Kar*_*ten 263

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

如果(并且仅当)您有一个必须在不同的Web服务器(负载平衡)上运行的Web应用程序,您必须使用memcache进行分布式缓存.如果没有,只需坚持APC及其缓存.

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

您可以/应该将它们用于不同的目的.

  • "操作码"缓存是将纯PHP代码编译成机器代码("操作码")然后将其存储在编译形式以供将来请求(直到它检测到原始PHP文件已更改)的缓存.这意味着PHP不必在每个请求上运行此编译步骤,从而节省了一些时间.这只是帮助确保快速网站(其中包括许多其他网站)的方法之一. (34认同)
  • 令人惊叹的答案+1.我现在的问题是什么是"操作码"缓存? (5认同)
  • @Karsten如果您有不同的服务器(如云负载环境),只要您不需要维护/共享状态,APC也可以作为直接内存缓存正常工作 - 尽管可能不如每个服务器一样优化云实例将不得不温暖自己的缓存... (4认同)
  • 有一个有趣的幻灯片解释了图表和基准测试的一些差异,这里:http://www.slideshare.net/FordAntiTrust/php-performance-with-apc-memcached (2认同)

xkc*_*150 42

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

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

请记住,APC还可以编译并加快脚本执行时间.因此,您可以使用APC来提高执行性能,同时使用memcached进行缓存存储.

  • 2014年更新:PHP 5.5将包含Zend Optimizer Plus(仅适用于opcache,因此不适用于用户缓存),似乎APC不会超越PHP 5.4开发?但是现在有APCu http://pecl.php.net/package/APCu,它只占用了APC的用户缓存部分 (7认同)
  • APC也可以缓存存储....或者? (3认同)

Hie*_* Vo 18

APC的主要优点是操作码缓存.由于PHP 5.5将OpCache集成到其核心,而用于PHP 5.4的APC仍被标记为测试版,因此它不是官方公告,但APC的开发将在不久的将来被删除.

所以我建议你选择Memcached.

  • 我花了几个小时在网上思考它,我得出了同样的结论. (5认同)

小智 9

我使用一个用于速度,另一个用于同步我的所有服务器.如果你确实使用了memcache,那么请记住你需要用iptables阻止的开放端口.


Nir*_*evy 6

嘿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开发人员)

  • 我偶然发现了这一点,并希望更新它现在似乎已得到解决(因为它应该在2年之后!).这是一个封闭的错误报告,例如:http://bugs.debian.org/cgi-bin/bugreport.cgi?video = 572529 (22认同)