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 de0indique 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