Commande CAS de Memcached
La commande CAS (Check-And-Set ou Compare-And-Swap) de Memcached est utilisée pour effectuer une opération de « vérification et définition ».
Il ne peut écrire la valeur que si, après que le client actuel a récupéré la valeur pour la dernière fois, la valeur correspondant à la clé n'a pas été modifiée par d'autres clients.
La vérification est effectuée via le paramètre cas_token, qui est une valeur unique de 64 bits que Memcached attribue à un élément existant.
Syntaxe :
Le format de syntaxe de base de la commande CAS est le suivant :
cas key flags exptime bytes unique_cas_token [noreply] value
Les descriptions des paramètres sont les suivantes :
- key:La clé dans la structure clé-valeur, utilisée pour rechercher la valeur mise en cache.
- flags: Un paramètre entier pouvant inclure des paires clé-valeur ; le client l'utilise pour stocker des informations supplémentaires sur la paire clé-valeur.
- exptime: Durée (en secondes) de stockage de la paire clé-valeur dans le cache (0 signifie pour toujours)
- bytes: Le nombre d'octets stockés dans le cache
- unique_cas_tokenUne valeur unique de 64 bits obtenue via la commande gets.
- noreply (facultatif): Ce paramètre indique au serveur qu'il n'a pas besoin de renvoyer de données
- value: La valeur stockée (toujours sur la deuxième ligne) (peut être directement comprise comme la valeur dans la structure clé-valeur)
Exemple
Pour utiliser la commande CAS sur Memcached, vous devez obtenir un jeton auprès du serveur Memcached à l'aide de la commande gets.
La commande gets fonctionne de manière similaire à la commande get de base. La différence entre les deux commandes est que gets renvoie un peu plus d'informations : une valeur entière de 64 bits qui ressemble beaucoup à un identifiant de "version" pour la paire nom/valeur.
Les étapes de l'exemple sont les suivantes :
- Si aucun jeton unique n'est défini, la commande CAS renverra une erreur.
- Si la clé n'existe pas, l'exécution échoue.
- Ajoutez une paire clé-valeur.
- Obtenez un jeton unique via la commande gets.
- Utilisez la commande cas pour mettre à jour les données
- Utilisez la commande get pour vérifier si les données ont été mises à jour
cas tp 0 900 9 ERROR <− 缺少 token cas tp 0 900 9 2 memcached NOT_FOUND <− 键 tp 不存在 set tp 0 900 9 memcached STORED gets tp VALUE tp 0 9 1 memcached END cas tp 0 900 5 1 redis STORED get tp VALUE tp 0 5 redis END
Sortie
Si les données sont ajoutées avec succès, la sortie est :
STORED
Description des informations de sortie :
- STORED: Sortie après une sauvegarde réussie.
- ERROR: erreur d'enregistrement ou erreur de syntaxe.
- EXISTS: Un autre utilisateur a aussi mis à jour les données après la dernière récupération.
- NOT_FOUND: La paire clé-valeur n'existe pas sur le serveur Memcached.