web-dev-qa-db-fra.com

Quand devrais-je utiliser Memcache au lieu de Memcached?

Il semble que PHP possède deux bibliothèques memcached nommées memcache et memcached . Quelle est la différence et comment savez-vous lequel utiliser? Est-ce un obsolète? Il semble que memcached offre plus de méthodes, donc je suppose que cela signifie que c'est lui qui a eu le plus de développement - mais cela semble également nécessiter bibliothèques externes C/C++ , donc je ne suis pas sûr de pouvoir l'installer.

Il semble que memcache existe depuis plus longtemps, ne nécessite pas de bibliothèques supplémentaires et possède fichiers binaires pré-compilés pour Windows! Je penserais que ce serait le meilleur choix pour le moment. Cependant, étant nouveau sur memcached (serveur), je ne sais pas s'il existe des fonctionnalités super importantes dans memcached (php) qui en valent la peine.

316
Xeoncross

client Memcached la bibliothèque vient d'être publiée comme stable. Il est utilisé par digg (a été développé pour digg par Andrei Zmievski, n'est plus disponible avec digg) et implémente beaucoup plus de memcached protocole que l’ancien client memcache. Les fonctionnalités les plus importantes de memcached sont:

  1. jetons Cas . Cela m'a beaucoup facilité la vie et constitue un système préventif facile pour les données obsolètes. Chaque fois que vous extrayez quelque chose du cache, vous pouvez recevoir un jeton cas (un numéro double). Vous pouvez ensuite utiliser ce jeton pour enregistrer votre objet mis à jour. Si personne d'autre n'a mis à jour la valeur pendant que votre thread était en cours d'exécution, le swap aboutira. Sinon, un nouveau jeton de cas a été créé et vous devez recharger les données et les enregistrer à nouveau avec le nouveau jeton.
  2. Lire rappels sont la meilleure chose depuis le pain en tranches. Cela a beaucoup simplifié mon code.
  3. getDelayed () est une fonctionnalité intéressante qui permet de réduire le temps que votre script doit attendre pour que les résultats reviennent du serveur.
  4. Bien que le serveur memcached soit supposé être très stable, ce n’est pas le plus rapide. Vous pouvez utiliser le protocole binaire au lieu de ASCII avec le nouveau client.
  5. Chaque fois que vous sauvegardez des données complexes dans memcached, le client utilisait toujours la sérialisation de la valeur (ce qui est lent), mais maintenant avec memcached client, vous avez la possibilité d'utiliser igbinary . Jusqu'ici, je n'ai pas encore eu l'occasion de tester le gain de performance que cela peut représenter.

Tous ces points étaient suffisants pour que je passe au nouveau client et puisse vous dire que cela fonctionne à merveille. Il existe une dépendance externe à la bibliothèque libmemcached , mais nous avons néanmoins réussi à l’installer sur Ubuntu et Mac OSX, donc aucun problème à ce jour.

Si vous décidez de mettre à jour la bibliothèque la plus récente, je vous suggère de mettre à jour la dernière version du serveur, ainsi que certaines fonctionnalités de Nice. Vous aurez besoin d’installer libevent pour pouvoir le compiler, mais sous Ubuntu ce n’était pas si difficile.

Je n'ai encore vu aucun framework récupérer le nouveau client memcached (bien que je ne les garde pas au courant), mais je présume que Zend sera bientôt opérationnel.

MISE À JOUR

Zend Framework 2 a un adaptateur pour Memcached qui peut être trouvé ici

246
Miha Hribar

Lorsque vous utilisez Windows, la comparaison est écourtée: memcache semble être le seul client disponible.

11
rymo

Nous sommes en 2013. Oubliez les commentaires de 2009. De même, si vous exécutez de lourdes charges de trafic, ne songez même pas à faire avec un memcache basé sur Windows. Lorsqu'il s'agit d'une très grande échelle (plus de 500 serveurs Web frontaux) et de plus de 20 serveurs de bases de données et réplicants (mélange mysql & mssql), une batterie de serveurs memcached (12 serveurs dans le groupe) prend en charge plusieurs volumes importants OLTP applications répondant entre 25K et 40K mc-> reçoivent des appels par seconde. Ces appels sont ceux qui font NOT doivent atteindre une base de données.

IMHO, cette utilisation de memcached a permis à SERIOUS $$$ de réaliser des économies substantielles sur CAPEX pour les nouveaux serveurs et licences de base de données, ainsi que sur les contrats de support pour les conceptions commerciales de grande taille.

9
Mike Trest

Memcached est une nouvelle API, elle fournit également memcached en tant que fournisseur de session, ce qui pourrait être très utile si vous avez une batterie de serveurs.

Après la version est toujours très basse 0.2 mais j'ai utilisé les deux et je n'ai pas rencontré de problème majeur, donc je voudrais aller à memcached car c'est nouvelle.

7
RageZ