我可以在同一台服务器上使用APC和memcached吗?

时间:2009-12-20 08:27:02

标签: php memcached apc

我正在使用memcache来缓存对象,但是想添加像APC这样的操作码加速器。由于它们都涉及缓存,我不确定它们是否会“踩到彼此的脚趾”,即我不确定memcache是​​否已经是OP代码加速器。

有人可以澄清吗?我想将它们用于两者 - 用于不同的事情。用于缓存我的对象的memcache和用于代码加速的APC

2 个答案:

答案 0 :(得分:19)

Memcache更像是分布式对象缓存,而不是APC或XCache,它将PHP字节码存储在内存中,因此您不必每次都解析它。他们的主要目的是不同的。

例如,如果您有一个人们经常请求的CPU密集型数据库查询,您可以将结果对象缓存在内存缓存中,然后引用它而不是一直重新运行该查询。

APC& XCache确实具有类似的对象缓存功能,但您仅限于主机。如果您希望10个不同的服务器都可以访问该对象而无需为每个服务器重新执行查询,该怎么办?你只需将它们引导到你的memcache服务器就可以了。如果你只有一台服务器,你仍然可以获得好处,因为如果你需要分支到更多的盒子,使用memcache将来会帮助你扩展。

要考虑的主要事项是您认为您的应用需要扩展。 Memcache有更多的开销,因为你必须使用TCP连接来访问它,而不仅仅是对APC / Xcache共享对象的函数调用。

然而,Memcache有以下好处:

  • 比磁盘更快或重新运行查询。
  • 扩展到多台服务器。
  • 使用多种不同的语言,您的对象不会仅限于PHP + APC / Xcache。
  • 所有进程/语言都可以访问相同的对象,因此您不必担心PHP子进程是否具有空对象缓存。如果您正在运行PHP-FPM,这可能不是什么大不了的事。

在大多数情况下,我建议在memcache中缓存你的对象,因为它并不困难。对未来更加灵活。

请注意,这是关于缓存对象的 。 Memcache NOT 有任何字节码或PHP加速功能,这就是我与APC或Xcache并行运行的原因

答案 1 :(得分:4)

是的,你可以同时使用它们。