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.
Autres extensions