7

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

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

4

2 回答 2

19

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

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

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

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

但是,Memcache 具有以下优点:

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

在大多数情况下,我建议将您的对象缓存在 memcache 中,因为这并不难,而且对未来更加灵活。

请记住,这与缓存对象有关。Memcache 没有任何字节码或 PHP 加速功能,这就是我将它与 APC 或 Xcache 并行运行的原因

于 2009-12-20T08:38:14.523 回答
4

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

于 2009-12-20T08:30:02.203 回答