我应该用什么来缓存?

时间:2013-06-06 06:02:34

标签: php yii memcached apc

我正在使用Yii框架开发一个应用程序。应用程序将具有多服务器配置。我读到了Memcache和APC。

你能告诉我在APC和Memcache之间Yii的效果如何?

4 个答案:

答案 0 :(得分:3)

尽管APC和Memcache都用于不同的目的,但您应该同时使用它们。由于您有多个服务器,因此memcache将有助于跨服务器缓存和维护用户数据状态,APC将有助于加快脚本执行时间。

APC将纯PHP代码编译成机器代码并将其保存在以后的所有请求中,可以节省编译时间。这里的链接可以让您了解如何在Yii中使用它 - http://www.yiiframework.com/wiki/312/getting-the-most-out-of-apc-for-yii/

答案 1 :(得分:2)

正如其他人所说,APC用于两个目的:OpCode Cache和User Variables Cache。从PHP 5.5开始,OpCache默认启用,比APC更优化;因此,OpCache将用于OpCode缓存。 如果要将APC用于使用PHP 5.5的应用程序,则应仅将APCu用于用户变量缓存。

MemCache与APC一样用于变量缓存,但是当您计划扩展应用程序时,优势就在于此。如果你想部署超过1个PHP应用程序服务器[水平扩展],如果你没有使用数据库进行PHP会话管理,那么如果你使用APC进行缓存,那么你会遇到很多问题。知道您的代码存在于哪个APC服务器中。而MemCache是​​分布式缓存引擎,即使您部署了多个MemCache服务器,但MemCache将其视为缓存数据的位置。

答案 2 :(得分:1)

APC用于操作码,但Memcache仅用于应用程序缓存,例如缓存数据库。

答案 3 :(得分:0)

<强> APCu 不与其他服务器共享缓存,但速度更快。

<强> Memcached的 可以与其他服务器共享,速度较慢。

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

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

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

如果您有相同Drupal站点的2个或更多Web服务器(apache / nginx),则需要 Memcached 。如果您在一台计算机上运行,​​那么 APCu 将是最快的。 无论如何,你都希望OPcache开启。

请参阅:

Memcached vs APC which one should I choose? https://drupal.stackexchange.com/questions/117932/difference-between-apc-memcached-and-how-both-can-be-used-for-cache-bins