Je veux utiliser memcached
http://www.danga.com/memcached/
Je l'ai installé à travers yum install memcached
Mais maintenant je dois me connecter à PHP, et il y a une extension nommée memcache et une autre nommée memcached? ARGH
http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php
Quelqu'un pourrait-il me diriger dans la bonne direction ici .. lequel va travailler?
De plus, dois-je ouvrir des ports pour que cela fonctionne même si c'est local? Après l'avoir exécuté, j'essaie telnet 127.0.0.1 11211 et la connexion est refusée.
Réponses:
La réponse courte: l’un ou l’autre correspond à ce que vous recherchez, mais mon premier choix serait le memcache (le premier que vous avez énuméré), uniquement en raison de son utilisation correcte de la nomenclature.
Maintenant, voici comment je suis arrivé à cette conclusion:
Voici un rapide aperçu des conventions de dénomination (pour les inconnus), ce qui explique la frustration du questionneur: Pour de nombreuses applications * nix, la partie effectuant le travail de fond est appelée "démon" (pensez "service" dans Windows). vous utilisez l’interface ou l’application cliente pour contrôler ou accéder au démon. Le démon porte le plus souvent le même nom que le client, auquel est ajoutée la lettre "d". Par exemple, "imap" serait un client qui se connecte au démon "imapd".
Il est clair que memcache adhère à cette convention de dénomination lorsque vous lisez l' introduction du module memcache (remarquez la distinction entre memcache et memcached dans cet extrait):
La frustration ici est causée par l'auteur de l'extension PHP mal nommée memcached , puisqu'elle partage le même nom que le démon réel appelé memcached . Notez également que dans l' introduction de memcached (le module php) , il est fait mention de libmemcached , qui est la bibliothèque partagée (ou API) utilisée par le module pour accéder au démon memcached:
En résumé, les deux sont fonctionnellement identiques, mais ils ont simplement des auteurs différents, et l'un est simplement nommé de manière plus appropriée que l'autre.
la source
memcached
supporte les jetons cas par exemple,memcache
ne le fait pas. Si vous en avez besoin, vous savez lequel (mal nommé ou non) choisir.Vous voulez probablement voir la comparaison de client PHP .
Version courte: Ils fonctionneront tous les deux et, dans la plupart des cas, l’un ou l’autre suffira.
Concernant l’autre question: oui, vous devriez pouvoir le faire
telnet 127.0.0.1 11211
. Très peu de pare-feu empêcheraient localhost de communiquer avec lui-même. Si vous ne parvenez pas à vous connecter, vérifiez que memcached s'exécute réellementps auxwww | grep memcached
, ce qui vous indiquera également les arguments de ligne de commande utilisés pour démarrer memcached. L'un des arguments doit être-p 11211
ou un autre numéro de port. Voirman memcached
pour le sens de tous les arguments possibles.la source
ps auxwww | grep memcached
?Comme le suggère le lien de Nate, les deux fonctionnent parfaitement pour une utilisation simple. Toutefois, memcached prend en charge davantage de fonctionnalités vous permettant d’obtenir le maximum de performances de memcached. Le protocole binaire réduit la quantité de données à envoyer entre le client et le serveur. Les multigets et multisets vous permettent d’obtenir / définir plusieurs éléments en même temps. Si vous pensez que vous avez besoin de plus de punch hors de memcache, memcached est le meilleur module. L'utilisation de libmemcached suggère que la bibliothèque elle-même est peut-être plus optimisée que la version uniquement PHP.
Memcached est un module plus récent comparé à memcache, sorti seulement il y a 8 mois. Si vous avez besoin de cibler une ancienne version de PHP, vous ne pouvez utiliser que vraiment memcache.
la source
Le plus vieux, buggier est appelé
php-memcache
parce que cela semblait le nom le plus approprié. La nouvelle version, meilleure version développée indépendamment par les gens de Digg a plutôt été nomméephp-memcached
dans l’intérêt de la désambiguïsation.Les personnes qui vous recommanderaient de choisir l’un plutôt que l’autre en se basant uniquement sur l’exactitude du nom n’ont vraiment aucune activité à offrir des conseils techniques.
la source
Ayant utilisé php-memcache récemment, je devrais vous indiquer php-memcached.
Voici quelques raisons qui me viennent à l’esprit.
1) Il n'y a pas de méthode getErrorCode () ou équivalente. Par conséquent, si get () renvoie FALSE, vous ne saurez pas si cela est dû au fait que la valeur stockée dans memcache est false ou s'il existe un problème quelconque.
2) Son algorithme de hachage pour un hachage cohérent semble différer d'autres implémentations, telles que les nombreuses bibliothèques clientes construites à partir de libmemcached. Cela signifie que si vous souhaitez utiliser le même cluster memcache avec plusieurs langues, vous aurez probablement des problèmes pour stocker une valeur avec le client PHP et que les autres clients ne la trouveront pas.
la source
Les deux ont des problèmes à partir d'aujourd'hui. PECL / memcache est vieux et fiable, à quelques exceptions près où il est périmé. PECL / memcached 1.x est au mieux bêta. Certaines fonctions ne traitent pas les clés numériques, il fuit les connexions lors de l’utilisation de connexions persistantes. Certains (tous?) Sont en cours de réparation dans GitHub et seront publiés à un moment donné dans 2.x, mais pas aujourd'hui. Pour un examen plus détaillé, voir http://brian.moonspot.net/php-memcached-issues
la source
Je travaille sur un livre "Expert PHP and MySQL". J'ai écrit à peu près la même chose à propos des différences. Ce que j'ai recommandé était PECL / memcached. N ° 1 - il s’articule autour d’une bibliothèque C performante et complète # 2 - il a été mis à jour plus récemment. # 3 - plus de fonctionnalités. Pas de dénigrement pour PECL / memcache.
la source
J'ai eu quelques problèmes assez graves avec Drupal 6 et php-pecl-memcached dans lesquels les temps de réponse ont été retardés jusqu'à 5 ms par appel et ont poussé un site particulier à créer 5x plus d'appels qu'avant le changement de php-pecl-memcached . Passer à php-pecl-memcache a résolu tous les problèmes. latence et appels supplémentaires.
Cette réponse est uniquement destinée à aider les utilisateurs de Drupal 6 et éventuellement de Drupal 7.
la source
Et il existe d'autres clients pour memcached, voir http://code.google.com/p/memcached/wiki/Clients
Couper et coller depuis le web:
http://www.php.net/manual/en/intro.memcache.php
http://www.php.net/manual/en/intro.memcached.php
http://pecl.php.net/package/memcached "Extension PHP pour l'interfaçage avec memcached via la bibliothèque libmemcached" Cette extension utilise la bibliothèque libmemcached pour fournir une API permettant de communiquer avec des serveurs memcached. https://github.com/andreiz/php-memcached
http://pecl.php.net/package/memcache "extension memcached" Memcached est un démon de mise en cache conçu spécialement pour les applications Web dynamiques afin de réduire la charge de la base de données en stockant les objets en mémoire. Cette extension vous permet de travailler avec memcached via des interfaces OO et procédurales pratiques.
http://code.google.com/p/memcached/wiki/PHPClientComparison
la source