Quand dois-je utiliser Memcache au lieu de Memcached?

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

il semble que memcache a a été autour plus longtemps, ne nécessite pas de bibliothèques supplémentaires, et a binaires pré-compilés pour même windows! Je pense que ce serait le meilleur choix pour l'instant. Cependant, étant nouveau dans memcached (server), Je ne suis pas sûr qu'il y ait des fonctionnalités super importantes dans memcached (php) qui le rendent valable pour les problèmes supplémentaires.

313
demandé sur Shog9 2009-09-18 07:07:52

4 réponses

La bibliothèque

Memcached client vient d'être publiée comme stable. Il est utilisé par digg (a été développé pour digg par Andrei Zmievski, maintenant plus avec digg) et implémente beaucoup plus du protocole memcached que l'ancien client memcache. Les caractéristiques les plus importantes de memcached sont:

  1. Tas de jetons . Cela a rendu ma vie beaucoup plus facile et est un système de prévention facile pour les données périmées. Chaque fois que vous retirez quelque chose du cache, vous pouvez recevoir avec lui un jeton cas (un numéro double). Vous pouvez utiliser ce token pour sauvegarder votre objet mis à jour. Si personne d'autre n'a mis à jour la valeur pendant que votre thread tournait, le swap réussira. Sinon, un nouveau jeton cas a été créé et vous êtes forcé de recharger les données et de les sauvegarder à nouveau avec le nouveau jeton.
  2. Lisez rappels sont les meilleurs chose depuis le pain tranché. Il a simplifié une grande partie de mon code.
  3. getDelayed () est une fonctionnalité agréable qui peut réduire le temps que votre script doit attendre que les résultats reviennent 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 sauvegardez des données complexes dans memcached le client utilisé pour toujours faire la sérialisation de la valeur (qui est lente), mais maintenant avec le client memcached vous avez l'option d'utiliser igbinary . Jusqu'à présent, je n'ai pas eu la chance de tester combien de gain de performance cela peut être.

tous ces points ont été assez pour moi de passer au nouveau client, et peut vous dire que cela fonctionne comme un charme. Il y a cette dépendance externe sur la bibliothèque libmemcached , mais ont réussi à l'installer néanmoins sur Ubuntu et Mac OSX, donc aucun problème là-bas jusqu'à présent.

si vous décidez de mettre à jour vers la bibliothèque la plus récente, je vous suggère de mettre à jour vers la dernière version du serveur ainsi qu'il a quelques fonctionnalités agréables aussi bien. Vous aurez besoin d'installer libevent pour qu'il compile, mais sur Ubuntu ce n'était pas beaucoup de problèmes.

Je n'ai pas vu de cadres ramasser le nouveau client memcached jusqu'à présent (bien que je ne keep track of them), mais je présume que Zend sera à bord sous peu.

UPDATE

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

243
répondu Miha Hribar 2015-08-11 09:15:51

nous sommes en 2013. Oubliez les commentaires de 2009. De même, si vous êtes en train de gérer des charges de trafic importantes, ne pensez même pas à faire-avec une memcache basée sur windows. Quand il s'agit d'une très grande échelle (plus de 500 serveurs web front end) et plus de 20 serveurs de base de données back end et les répliquants (mélange mysql & mssql), une ferme de serveurs memcached (12 serveurs en groupe) prend en charge plusieurs applications OLTP à haut volume répondant 25K ~ 40K mc->get calls per second. Ces appels sont ceux qui ne et non doivent atteindre une base de données.

IMHO, cette utilisation de memcached a fourni de sérieuses économies$$$$, $$ $ $ sur CAPEX pour les nouveaux serveurs et licences DB ainsi que sur les contrats de soutien pour les grandes conceptions commerciales.

11
répondu Mike Trest 2014-03-20 15:19:25

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

10
répondu rymo 2015-05-04 11:25:21

Memcached est une API plus récente, il fournit également memcached comme un fournisseur de session qui pourrait être génial si vous avez une ferme de serveur.

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 depuis qu'il est nouveau.

7
répondu RageZ 2015-05-04 11:25:09