web-dev-qa-db-fra.com

Memcache Vs. Memcached

Duplicate possible:
tilisation de Memcache vs Memcached avec PHP

Quelqu'un peut m'expliquer la différence entre Memcache et Memcached dans l'environnement PHP? Quels sont les avantages de l'un par rapport à l'autre? Pouvez-vous également suggérer les critères utilisés pour choisir entre l'un ou l'autre?

130
Luca Bernardi

(En partie volé à ServerFault )

Je pense que 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.


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 un "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):

Le module Memcache fournit une interface pratique orientée objet et procédurale au démon de mise en cache memcached, extrêmement efficace, spécialement conçu pour réduire la charge de la base de données dans les applications Web dynamiques.

Le module Memcache fournit également un gestionnaire de session (memcache).

Plus d'informations sur memcached sont disponibles sur " http://www.danga.com/memcached/ .

La frustration ici est causée par l’auteur de l’extension PHP qui a été mal nommée memcached, puisqu’il porte le même nom que le démon réel appelé memcached. Notez également que, dans l’introduction de memcached (le php module), il 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:

memcached est un système de mise en cache d'objets à mémoire distribuée hautes performances, de nature générique, mais destiné à accélérer les applications Web dynamiques en allégeant la charge de la base de données.

Cette extension utilise la bibliothèque libmemcached pour fournir une API permettant de communiquer avec les serveurs memcached. Il fournit également un gestionnaire de session (memcached).

Des informations sur libmemcached sont disponibles sur " http://tangent.org/552/libmemcached.html .

111
Mez

Ils ne sont pas identiques. Memcache est plus vieux mais il a quelques limitations. J'utilisais très bien dans mon application jusqu'à ce que je réalise que vous ne pouvez pas stocker littéralement FALSE dans le cache. La valeur FALSE renvoyée du cache est la même que FALSE renvoyée lorsqu'une valeur est introuvable dans le cache. Il n'y a aucun moyen de vérifier qui est qui. Memcached a une méthode supplémentaire (entre autres) Memcached::getResultCode qui vous dira si la clé a été trouvée.

En raison de cette limitation, je suis passé au stockage de tableaux vides au lieu de FALSE dans le cache. J'utilise toujours Memcache, mais je voulais simplement mettre cette information à la disposition des personnes qui décident.

136
Mike Starov