Je suis un débutant dans l'apprentissage de memcached. Le serveur memcached m'a le plus dérouté. Puis-je le voir comme un ordinateur à serveur unique comme un serveur Web? Je suis également confus quant à la relation entre le serveur memcached et le client, sont-ils situés sur des ordinateurs différents?
Je suis d'accord avec la plupart des choses auxquelles @phihag a répondu mais je dois clarifier certaines choses.
Memcached stocke les données selon une clé (phihag l'a appelé un identifiant, à ne pas confondre avec les identifiants de base de données). Les données peuvent être de différentes tailles afin que vous puissiez stocker de petits bits (comme 1 enregistrement extrait de la base de données) ou vous pouvez stocker d'énormes blocs de données (comme des centaines d'enregistrements, ou des pages html finies entières).
Memcached n'est pas généralement utilisé sur la même machine que le serveur d'applications, la raison en est qu'il est conçu pour être utilisé via TCP (il serait accessible via sockets s'il était conçu pour fonctionner sur le même serveur) et il a été conçu comme un serveur de mise en commun.
La partie mise en commun est intéressante - vous pouvez avoir 10 machines exécutant Memcached chacune allouant un maximum de 10 Go de RAM à cet effet. 10 * 10 = 100 Go d'espace RAM.
Lorsque vous écrivez une valeur dans Memcached, un seul (au hasard ou via certains algorithmes) des serveurs la stocke. Lorsque vous essayez de lire une valeur de Memcached, seul le serveur qui l'a stockée vous l'enverra.
Donc en effet vous pouvez mettre toutes les bases de données/memcached/application/fileserver sur la même machine, et généralement vous faites cela pour votre sandbox de développement. Mais vous aussi pouvez mettre chacun sur une machine distincte et toute autre combinaison des deux.
Si vous n'avez besoin que d'un seul serveur Memcached, vous serez probablement d'accord pour l'héberger sur la même machine que le code d'application.
Si vous commencez à utiliser un serveur de cache frontal tel que le vernis ou que vous configurez NginX en tant que serveur de cache frontal, vous devrez configurer certains serveurs Memcached pour stocker les données que ces serveurs de cache frontal mettent en cache.
Si vous distribuez votre base de données sur plusieurs serveurs et des serveurs de fichiers dans un CDN, cela signifie que votre application gère un grand nombre de données dans un court laps de temps, vous aurez donc besoin de beaucoup d'espace RAM qui ne pouvait pas être disponible sur un seul serveur d'applications.
Et comme l'extension d'un pool de mémoire pour un serveur Memcached est aussi simple que l'ajout de l'IP du nouveau serveur à la liste, vous évoluerez horizontalement comme sur de nombreux serveurs (ce qui est la véritable utilisation typique de Memcached).
Le serveur memcached est un programme qui gère les données que memcached stocke (à ne pas confondre avec un machine, qui peut également être appelé serveur). En théorie, il peut fonctionner sur n'importe quel ordinateur. Cependant, il est généralement exécuté sur la même machine que l'application principale.
L'application utilise ensuite son client memcached pour parler au serveur memcached et demander le contenu mis en cache. C'est plus rapide que d'interroger des données à partir d'une base de données traditionnelle car