316 votes

Quand devrais-je utiliser Memcache au lieu de Memcached?

Il semble que PHP a deux bibliothèques memcached nommé memcache et memcached. Quelle est la différence et comment savez-vous lequel utiliser? Est un dépassée? Il semble que memcached propose plusieurs méthodes donc, je suppose que cela signifie qu'il a eu le plus de développement, mais il semble également exiger externe bibliothèques C/C++ donc je ne suis pas sûr si je peux l'installer.

Il semble que memcache a été autour de plus, ne nécessite pas de bibliothèques supplémentaires, et a des binaires pré-compilés pour windows! Je pense que ce serait le meilleur choix pour l'instant. Toutefois, étant nouveau memcached (serveur) je ne suis pas sûr s'il est super important de fonctionnalités dans memcached (php) qui font qu'il vaut la problèmes supplémentaires.

246voto

Miha Hribar Points 4121

Memcached client bibliothèque vient tout juste de sortir comme stable. Il est utilisé par digg ( a été développé pour digg par Andrei Zmievski, maintenant n'est plus avec digg) et met en œuvre beaucoup plus du protocole memcached que l'ancien client de memcache. Les caractéristiques les plus importantes que memcached a sont:

  1. Tas de jetons. Ce qui rend ma vie beaucoup plus facile et est un simple système préventif pour des données périmées. Chaque fois que vous tirez quelque chose à partir du cache, vous pouvez recevoir un tas de jeton (double nombre). Vous pouvez que d'utiliser ce jeton pour enregistrer votre mise à jour de l'objet. Si aucune autre mise à jour de la valeur tandis que votre fil est en cours d'exécution, le swap va réussir. Sinon, un nouveau cas de jeton a été créé et vous êtes obligé de recharger les données et l'enregistrer de nouveau avec le nouveau jeton.
  2. Lire à travers les rappels sont la meilleure chose depuis le pain tranché. Il a simplifié beaucoup de mon code.
  3. getDelayed() est une fonctionnalité intéressante qui permet de réduire le temps de votre script doit attendre les résultats de revenir à partir du serveur.
  4. Alors que le serveur memcache est censé être très stable, il n'est pas le plus rapide. Vous pouvez utiliser le protocole binaire au lieu de l'ASCII avec le nouveau client.
  5. Chaque fois que vous enregistrez des données complexes dans memcached le client à toujours faire de la sérialisation de la valeur (qui est lent), mais maintenant, avec memcached client, vous avez la possibilité d'utiliser igbinary. Jusqu'à présent, je n'ai pas eu la chance de tester la façon dont beaucoup d'un gain de performance.

Tous ces points ont été assez pour moi de basculer vers le nouveau client, et peux vous dire que ça fonctionne comme un charme. Il n'y a que la dépendance extérieure sur la libmemcached de la bibliothèque, mais ont réussi à l'installer néanmoins sur Ubuntu et Mac OSX, donc pas de problèmes jusqu'à présent.

Si vous décidez de mettre à jour la plus récente de la bibliothèque, je vous suggère de mettre à jour vers la dernière version du serveur en tant que bien, car il a quelques fonctionnalités intéressantes. Vous aurez besoin d'installer libevent pour compiler, mais sur Ubuntu il n'était pas trop de problèmes.

Je n'ai pas vu tous les cadres de chercher le nouveau client memcached jusqu'à présent (bien que je n'ai pas garder une trace d'eux), mais je présume que Zend participeront peu de temps.

11voto

rymo Points 924

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

9voto

Mike Trest Points 153

Ce est 2013. Oublier le 2009 commentaires. De même, si vous exécutez graves de la charge de trafic, de ne pas même envisager de la façon de faire avec un windows en fonction memcache. Lorsque vous traitez avec une très grande échelle (plus de 500 serveurs web frontaux) et 20+ arrière serveurs de bases de données et les réplicants (mysql et mssql mix), une ferme de serveurs memcached (12 serveurs dans le groupe) prend en charge de multiples volume élevé d'applications OLTP répondre à 25K ~ 40K mc->reçois des appels par seconde. Ces appels sont ceux qui ne PAS à avoir à atteindre une base de données.

À mon humble avis, cette utilisation de memcached fourni SÉRIEUX $$$,$$$d'économies sur les DÉPENSES d'investissement pour les nouveaux DB serveurs et licences d'exploitation ainsi que sur le soutien des contrats pour les grands modèles sur le marché.

7voto

RageZ Points 15212

Memcached est une API plus récente, elle fournit également memcached en tant que fournisseur de session, ce qui peut être génial si vous avez une batterie de serveurs.

Après la version est encore vraiment faible 0.2 mais j'ai utilisé les deux et je n'ai pas rencontré de problème majeur, donc je voudrais aller à memcached car il est nouveau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X