octobre
2012
Memcached est un système de cache distribué qui permet un gain de performance important, par exemple sur les site internet qui doivent gérer plusieurs millions d’utilisateurs authentifiés simultanément.
A des fins de debugging, nous pouvons avoir besoin de savoir si une insertion a réussi, ou d’effectuer soi même une insertion à la main. La manière la plus simple de procéder et de se connecter sur le serveur memcached en telnet. S’il y a plusieurs serveurs memcached (cache distribué), l’insertion sur un seul d’entre eux suffira. A l’inverse, il n’y a pas vraiment d’outil de supervision permettant de déterminer sur quel serveur une donnée est stockée, donc pour tester la présence d’une valeur, il vaut mieux tester sur chaque serveur.
Venons-en maintenant aux détails pratiques (si vous avez le moindre doute, référez vous à la spec complète):
1) Connexion au serveur memcached
Exemple en local sur le port memcached par défaut:
2) Lecture d’une clé dans memcached
Il n’y a pas d’invite de commande sur un Telnet, cependant je vais placer un chevron ‘$’ pour la symboliser afin de mieux distinguer mes input des retours de memcached.
Exemple:
VALUE toto 0 17
mavaleurpardefaut
END
Commentaire: observez bien le retour, qui donne beaucoup d’infos permettant de comprendre la mécanique de l’insertion. La première ligne « VALUE » donne trois informations qualitatives sur la valeur stockée. On y trouve successivement la valeur de la clé, un flag, et la taille en octets de la valeur stockée (un octet par caractère si votre valeur est une chaîne de caractères). La deuxième ligne contient la valeur, qui dans notre exemple comporte effectivement 17 caractères. Enfin, sur la troisième ligne, le mot clé « END » indique la fin de l’output et que tout s’est bien déroulé.
3) Nouvelle Insertion dans memcached
- « add » est le nom de la commande, d’autres sont possibles, mais c’est la plus simple.
- « keyname » est le nom de la clé à insérer.
- « flag » est un nombre entier arbitraire de 16 bits non signé. Les versions récentes de memcached supportent 32 bits, à vous de voir si vous avez besoin d’assurer une éventuelle rétrocompatibilité. Ce nombre ne représente rien du point de vue de memcached, vous pouvez l’utiliser pour stocker un renseignement supplémentaire concernant votre valeur.
- « exptime » permet de fixer un délai d’expiration en secondes après lequel la valeur ne sera plus disponible. Le plus simple est d’indiquer un offset en secondes. La valeur ‘0’ indique que la valeur ne sera jamais périmée, ce qui n’empêche pas qu’elle puisse être effacée par le serveur memcached s’il vient à la juger obsolète et a besoin de libérer de la place pour de nouvelles valeurs.
- « nbbytes » est la taille en octets de la valeur que vous allez entrer. Si vous voulez stocker une chaine de caractères, cela correspond au nombre de caractères qu’elle contient.
Exemple:
$theansweris42
STORED
Commentaire: Une fois que vous avez dit que vous alliez entrer 13 octets, le serveur memcached attendra cette exacte quantité d’octets. Si vous n’en entrez pas assez, il continuera d’attendre jusqu’à ce qu’il ait son compte, si vous en entrez trop vous aurez systématiquement l’erreur suivante:
ERROR
[…] JavaFX Interrogation de memcached par telnet par Aldian (18/10/2012 13:03) Memcached est un système de cache distribué qui permet un gain de […]
[…] FX Scene Builder 1.1 en developer preview, tout ça en version … Continue reading → Interrogation de memcached par telnet par Aldian Memcached est un système de cache distribué qui permet un gain de performance […]