Gestion des Données dans Memcached : Commandes Essentielles de Stockage, Récupération et Maintenance

Commandes de Stockage dans Memcached

Memcached, un système de cache en mémoire distribué, offre un ensemble de commandes simples mais puissantes pour interagir avec les données. Ces commandes permettent de gérer efficacement les paires clé-valeur, allant de l'insertion initiale à la modification incrémentale ou à la suppression.

Commande SET : Stockage ou Mise à Jour

La commande SET est fondamentale pour insérer une nouvelle valeur dans le cache sous une clé spécifique, ou pour mettre à jour une valeur existante si la clé est déjà utilisée. C'est l'opération de base pour garantir qu'une clé contienne une valeur donnée.

Syntaxe de SET

SET <cle> <drapeaux> <temps_expiration> <taille_octets> [NOREPLY]
<valeur_a_stocker>

Détail des paramètres :

  • <cle> : L'identifiant unique de la donnée à stocker.
  • <drapeaux> : Un entier (non interprété par Memcached lui-même) utilisé par le client pour stocker des métadonnées optionnelles.
  • <temps_expiration> : La durée de vie de la donnée en cache, exprimée en secondes. Une valeur de 0 indique une conservation indéfinie (jusqu'à une éviction mémoire).
  • <taille_octets> : La taille exacte de la valeur en octets.
  • [NOREPLY] (optionnel) : Supprime la réponse du serveur, utile pour les opérations non bloquantes.
  • <valeur_a_stocker> : La donnée réelle, toujours fournie sur la ligne qui suit la commande.

Exemple d'utilisation de SET

Nous allons stocker un nom de produit avec une expiration de 5 minutes.

SET produit:chaise 0 300 8
Standard
STORED

GET produit:chaise
VALUE produit:chaise 0 8
Standard
END

Messages de Réponse

  • STORED : L'enregistrement a été effectué avec succès.
  • ERROR : Une erreur de protocole ou de syntaxe est survenue.

Commande ADD : Ajout Conditionnel

La commande ADD fonctionne similairement à SET, mais avec une contrainte importante : elle ne stockera la valeur que si la clé spécifiée n'existe pas encore. Si la clé est déjà présente, l'opération est ignorée et la valeur existante reste inchangée.

Syntaxe de ADD

ADD <cle> <drapeaux> <temps_expiration> <taille_octets> [NOREPLY]
<valeur_a_ajouter>

Les paramètres sont identiques à ceux de la commande SET.

Exemple d'utilisation de ADD

Tentons d'ajouter une clé, puis une seconde fois.

ADD elementUnique 0 0 7
Initial
STORED

GET elementUnique
VALUE elementUnique 0 7
Initial
END

ADD elementUnique 0 0 10
Nouveau texte
NOT_STORED

GET elementUnique
VALUE elementUnique 0 7
Initial
END

Messages de Réponse

  • STORED : La valeur a été ajoutée.
  • NOT_STORED : La clé existait déjà, l'opération a été annulée.

Commande REPLACE : Remplacement d'une Valeur Existante

La commande REPLACE permet de substituer la valeur associée à une clé, à condition que cette clé existe déjà. Si la clé est absente du cache, l'opération échoue sans modification.

Syntaxe de REPLACE

REPLACE <cle> <drapeaux> <temps_expiration> <taille_octets> [NOREPLY]
<nouvelle_valeur>

Les paramètres sont identiques à ceux de la commande SET.

Exemple d'utilisation de REPLACE

Nous remplaçons la valeur d'une clé existante, puis tentons un remplacement sur une clé non présente.

SET statutCommande 0 0 9
En attente
STORED

GET statutCommande
VALUE statutCommande 0 9
En attente
END

REPLACE statutCommande 0 0 8
Expediee
STORED

GET statutCommande
VALUE statutCommande 0 8
Expediee
END

REPLACE statutInconnu 0 0 5
Erreur
NOT_STORED

Messages de Réponse

  • STORED : La valeur a été remplacée.
  • NOT_STORED : La clé spécifiée n'a pas été trouvée.

Commande APPEND : Ajout de Contenu à la Fin

La commande APPEND concatène des données à la fin de la valeur actuelle associée à une clé. Cette opération ne peut être effectuée que si la clé existe déjà.

Syntaxe de APPEND

APPEND <cle> <drapeaux> <temps_expiration> <taille_octets> [NOREPLY]
<contenu_a_ajouter>

Les paramètres sont idetniques à ceux de la commande SET.

Exemple d'utilisation de APPEND

Ajoutons des informations à un journal d'événements.

SET journalEvenement 0 0 16
Debut de la session
STORED

GET journalEvenement
VALUE journalEvenement 0 16
Debut de la session
END

APPEND journalEvenement 0 0 20
, utilisateur connecte.
STORED

GET journalEvenement
VALUE journalEvenement 0 36
Debut de la session, utilisateur connecte.
END

Messages de Réponse

  • STORED : Les données ont été ajoutées.
  • NOT_STORED : La clé n'existe pas.
  • CLIENT_ERROR : Erreur de formatage de la commande.

Commande PREPEND : Ajout de Contenu au Début

La commande PREPEND est l'inverse d'APPEND : elle insère des données au début de la valeur existante d'une clé. Comme pour APPEND, la clé doit impérativement exister.

Syntaxe de PREPEND

PREPEND <cle> <drapeaux> <temps_expiration> <taille_octets> [NOREPLY]
<contenu_a_inserer>

Les paramètres sont identiques à ceux de la commande SET.

Exemple d'utilisation de PREPEND

Ajoutons un préfixe à un message existant.

SET messageImportant 0 0 10
 urgent.
STORED

GET messageImportant
VALUE messageImportant 0 10
 urgent.
END

PREPEND messageImportant 0 0 8
[ALERTE]
STORED

GET messageImportant
VALUE messageImportant 0 18
[ALERTE] urgent.
END

Messages de Réponse

  • STORED : Les données ont été insérées.
  • NOT_STORED : La clé n'existe pas.
  • CLIENT_ERROR : Erreur de formatage de la commande.

Commandes de Récupération Memcached

Commande GET : Récupération de Valeurs

La commande GET est utilisée pour extraire la ou les valeurs associées à une ou plusieurs clés spécifiées. Si une clé n'est pas trouvée, elle est simplement ignorée dans la réponse.

Syntaxe de GET

Pour une seule clé :

GET <cle>

Pour plusieurs clés (séparées par des espaces) :

GET <cle1> <cle2> <cle3> ...

Paramètre :

  • <cle> : L'identifiant de la valeur à obtenir.

Exemple d'utilisation de GET

Récupérons plusieurs configurations après les avoir préalablement stockées.

SET config:theme 0 0 5
sombre
STORED
SET config:langue 0 0 2
fr
STORED
SET config:timeout 0 0 3
120
STORED

GET config:theme config:langue config:utilisateur
VALUE config:theme 0 5
sombre
VALUE config:langue 0 2
fr
END

Commandes de Maintenance Memcached

Commande DELETE : Suppression d'une Clé

La commande DELETE est conçue pour retirer une paire clé-valeur du cache. L'opération ne réussit que si la clé spécifiée est présente.

Syntaxe de DELETE

DELETE <cle> [NOREPLY]

Paramètres :

  • <cle> : L'identifiant de la paire clé-valeur à effacer.
  • [NOREPLY] (optionnel) : Supprime la confirmation de suppression du serveur.

Exemple d'utilisation de DELETE

Supprimons une clé existante, puis tentons de supprimer une clé absente.

SET tokenSession 0 3600 20
abc123def456ghi789jkl
STORED

GET tokenSession
VALUE tokenSession 0 20
abc123def456ghi789jkl
END

DELETE tokenSession
DELETED

GET tokenSession
END

DELETE cleNonExistante
NOT_FOUND

Messages de Réponse

  • DELETED : La clé a été supprimée.
  • NOT_FOUND : La clé n'a pas été trouvée dans le cache.
  • ERROR : Erreur de protocole.

Commandes INCR et DECR : Incrémentation et Décrémentation Numérique

Ces deux commandes permettent d'effectuer des opérations arithmétiques sur des valeurs numériques stockées sous une clé. Les valeurs ciblées doivent être des entiers non signés de 32 bits.

Si la clé n'est pas présente, la réponse est NOT_FOUND. Si la valeur associée n'est pas un nombre, un CLIENT_ERROR est retourné.

Commande INCR : Incrémenter

Augmente la valeur numérique d'une clé par une quantité spécifiée.

Syntaxe de INCR

INCR <cle> <valeur_a_ajouter>

Paramètres :

  • <cle> : L'identifiant de la valeur numérique à modifier.
  • <valeur_a_ajouter> : Le montant de l'incrémentation.

Exemple d'utilisation de INCR

Incrémentons un compteur de likes.

SET likesArticle 0 0 2
15
STORED

GET likesArticle
VALUE likesArticle 0 2
15
END

INCR likesArticle 3
18

GET likesArticle
VALUE likesArticle 0 2
18
END

Commande DECR : Décrémenter

Diminue la valeur numérique d'une clé par une quantité spécifiée.

Syntaxe de DECR

DECR <cle> <valeur_a_soustraire>

Paramètres :

  • <cle> : L'identifiant de la valeur numérique à modifier.
  • <valeur_a_soustraire> : Le montant de la décrémentation.

Exemple d'utilisation de DECR

Décrémentons un stock de produits.

SET stockProduitA 0 0 3
100
STORED

GET stockProduitA
VALUE stockProduitA 0 3
100
END

DECR stockProduitA 10
90

GET stockProduitA
VALUE stockProduitA 0 2
90
END

Messages de Réponse pour INCR/DECR

  • <nouvelle_valeur> : La valeur numérique mise à jour, en cas de succès.
  • NOT_FOUND : La clé n'a pas été trouvée.
  • CLIENT_ERROR : La valeur n'est pas numérique ou une autre erreur client.
  • ERROR : Autres erreurs (syntaxe, etc.).

Commande FLUSH_ALL : Vider le Cache

La commande FLUSH_ALL est utilisée pour purger toutes les paires clé-valeur actuellement stockées dans le cache Memcached. Un paramètre optionnel de délai peut être fourni pour retarder cette opération de nettoyage.

Syntaxe de FLUSH_ALL

FLUSH_ALL [delai_secondes] [NOREPLY]

Exemple d'utilisation de FLUSH_ALL

Après avoir stocké une donnée, nous vidons le cache et vérifions l'absence de la clé.

SET cacheTest 0 60 14
Donnee importante
STORED

GET cacheTest
VALUE cacheTest 0 14
Donnee importante
END

FLUSH_ALL
OK

GET cacheTest
END

Étiquettes: Memcached Cache Distribué Commandes de Cache Gestion de données Optimisation Performances

Publié le 29 juillet à 18h46