web-dev-qa-db-fra.com

Memcached vs APC lequel devrais-je choisir?

J'ai lu cet article: http://www.mysqlperformanceblog.com/2006/09/27/apc-or-memcached/ du retour quand .. je veux obtenir le meilleur moteur de mise en cache disponible afin que mon application est vraiment rapide. Bien sûr, je ne veux pas sur-cache mais je veux au moins choisir la meilleure chose qui soit. Dans cet article, il est dit que Memcached est lent et apc est rapide, alors pourquoi tout le monde choisit-il memcached ?

http://framework.zend.com/manual/en/zend.cache.backends.html#zend.cache.backends.twolevels voici ce qui est dit "utilisez-en un rapide (mais limité) comme Apc , Memcache ... et un "lent" comme File, Sqlite ... "Pensez-vous qu'utiliser Apc en tant que fast et Memcache en tant que lent est une bonne idée?

160
Thomaschaaf

Memcached est un système de cache distribué, alors qu'APC n'est pas distribué - et principalement un cache opcode.

Si (et seulement si) vous avez une application Web qui doit vivre sur différents serveurs Web (équilibrage de charge), vous devez utiliser memcache pour la mise en cache distribuée. Sinon, il suffit de s'en tenir à APC et à son cache.

Vous devriez toujours utiliser un cache opcode, qui est APC (APC sera également intégré à php6 iirc, alors pourquoi ne pas commencer à l'utiliser maintenant).

Vous pouvez/devriez utiliser les deux à des fins différentes.

263
Karsten

Memcached si vous devez préserver l'état de plusieurs serveurs Web (si vous équilibrez la charge et qu'il est important que le contenu du cache soit le même pour tous les serveurs).

APC si vous avez simplement besoin d'accéder à une mémoire rapide pour lire (et écrire) sur un (ou chaque) serveur.

N'oubliez pas qu'APC peut également compiler et accélérer le temps d'exécution de votre script. Ainsi, vous pourriez par exemple utiliser APC pour améliorer les performances d'exécution, tout en utilisant memcached pour la mémoire cache.

42
xkcd150

Le principal avantage d'APC est le cache opcode. Depuis PHP 5.5 a intégré OpCache à son noyau et APC pour PHP 5.4 est toujours marqué en version bêta, ce n'est pas une annonce officielle, mais le développement d'APC serait abandonné dans un futur proche.

Je vous recommande donc de choisir Memcached.

18
Hieu Vo

J'utilise les deux l'un pour la vitesse et l'autre pour synchroniser tous mes serveurs. Si vous utilisez memcache, veuillez garder à l'esprit les ports ouverts que vous devrez bloquer avec iptables.

9
Saimon Lovell

Hey Thomaschaaf, j'espère que ce n'est pas un outil en retard pour vous, mais veuillez noter qu'APC a quelques problèmes liés au "cache utilisateur". En résumé, lorsque vous définissez des délais d'expiration pour les entrées de cache ou si votre Apache se bloque dans le code APC interne (délai d'expiration, par exemple), vous risquez de rencontrer des problèmes.

J'ai une entrée sur le problème ici: http://nirlevy.blogspot.com/2009/06/apc-futexwait-lockdown-make-your-Apache.html , et vous devriez également lire - http://t3.dotgnu.info/blog/php/user-cache-timebomb.html (de l'un des développeurs d'APC, je pense)

6
Nir Levy

J'utilise uniquement APC car APC est un cache de code et agit comme memcache! Un seul fichier de configuration au lieu de 2.

Et seulement 1 endroit pour surveiller les deux cache .....

1
Thomas Decaux

Cela dépend de ce que vous faites, mais pour mon drupal sites Web fonctionnant sur un VPS, je trouve que APC fonctionne très bien! Si vous utilisez CentOS 6, il est disponible en tant que mise à jour yum, donc simple à installer et à installer. pas de configuration car les valeurs par défaut sont raisonnables.

1
fred