【问题标题】:Can I use APC AND memcached on the same server?我可以在同一台服务器上使用 APC 和 memcached 吗?
【发布时间】:2009-12-20 08:27:01
【问题描述】:

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

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

【问题讨论】:

    标签: php memcached apc


    【解决方案1】:

    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 并行运行它的原因

    【讨论】:

    • "如果您只有一个服务器,您仍然会受益,因为如果您需要扩展到更多机器,使用 memcache 将帮助您在未来扩展。" -- 所以单台服务器没有好处?
    • @nickf,为我的回答添加了更多细节。
    • +1。还有一点要补充:APC 处理高并发的能力不如 memcached。我们在生产环境中同时使用 memcached 和 APC 来存储适当的应用程序数据——我们也在考虑开始使用 Redis(用于持久性和列表操作)。在高并发水平下,每个人都擅长某些其他人不擅长的事情。
    • 恕我直言,APC 数据缓存比 memcached 快 6-8 倍。 stackoverflow.com/questions/1794342/…
    • @nickf 这真的取决于 - 一如既往 - 取决于您的特定设置和要求。例如,在 WordPress 中使用 memcache(d) 可以跨请求和页面缓存对象。这不能通过 WordPress 核心/默认功能来完成。因此,即使在一台服务器上,Memcache(d) 也能提供很大的好处。
    【解决方案2】:

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

    【讨论】:

    • @SankalpSingha 为什么可笑?它们不应该同时使用吗?我想将 APC 用于我的操作码缓存和 memcached 用于我的 php 会话存储。这不是一个好主意吗?为什么?
    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多