CAS (Compare And Set) et CAD (Compare And Delete) sont des commandes conditionnelles atomiques destinées aux chaînes Redis natives sur les instances Tair. CAS met à jour la valeur d'une clé uniquement si elle correspond à la valeur attendue ; CAD supprime une clé uniquement si sa valeur correspond.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance Tair DRAM-based ou persistent memory-optimized exécutant la version mineure 1.2.3 ou ultérieure
(Recommandé) Mettez à jour l'instance vers la dernière version mineure pour bénéficier de fonctionnalités supplémentaires et d'une meilleure stabilité. Consultez la rubrique Update the minor version of an instance.
(Pour les instances en cluster ou avec séparation lecture/écriture) Mettez à jour les nœuds proxy vers la dernière version mineure afin que toutes les commandes s'exécutent comme prévu.
Vue d'ensemble des commandes
| Commande | Syntaxe | Description | |||
|---|---|---|---|---|---|
| CAS | `CAS key oldvalue newvalue [EX |
PX |
EXAT |
PXAT time]` |
Compare la valeur actuelle de la clé avec |
| CAD | CAD key value |
Compare la valeur actuelle de la clé avec value. Si elles correspondent, supprime la clé. |
Conventions syntaxiques
| Notation | Signification | |
|---|---|---|
UPPERCASE |
Mot-clé de la commande | |
italic |
Variable — remplacez par une valeur réelle | |
[options] |
Paramètre facultatif ; les paramètres sans crochets sont obligatoires | |
`A |
B` |
Mutuellement exclusif — spécifiez une seule option |
... |
Le paramètre peut être répété |
CAS
Compare de manière atomique la valeur actuelle d'une clé avec oldvalue et, si elles correspondent, la remplace par newvalue.
Syntaxe : CAS key oldvalue newvalue [EX|PX|EXAT|PXAT time]
Complexité temporelle O(1)
Paramètres
| Paramètre | Description |
|---|---|
key |
Clé cible de type chaîne |
oldvalue |
Valeur actuelle attendue de la clé |
newvalue |
Valeur à définir si oldvalue correspond à la valeur actuelle |
EX time |
Expiration relative en secondes. La valeur 0 entraîne l'expiration immédiate de la clé. Si ce paramètre est omis, tout TTL existant est supprimé et la clé n'expire pas. |
PX time |
Expiration relative en millisecondes. La valeur 0 entraîne l'expiration immédiate de la clé. Si ce paramètre est omis, tout TTL existant est supprimé et la clé n'expire pas. |
EXAT time |
Expiration absolue sous forme d'horodatage Unix en secondes. La valeur 0 entraîne l'expiration immédiate de la clé. Si ce paramètre est omis, tout TTL existant est supprimé et la clé n'expire pas. |
PXAT time |
Expiration absolue sous forme d'horodatage Unix en millisecondes. La valeur 0 entraîne l'expiration immédiate de la clé. Si ce paramètre est omis, tout TTL existant est supprimé et la clé n'expire pas. |
Si la clé possède un délai d'expiration (TTL) et que vous exécutez la commande CAS sans paramètre d'expiration, le TTL est supprimé et la clé n'expirera pas.
Valeur de retour
| Valeur | Signification |
|---|---|
1 |
La valeur correspondait ; la clé a été mise à jour |
0 |
La valeur ne correspondait pas ; la clé est inchangée |
-1 |
La clé n'existe pas |
| Erreur | Autre échec |
Exemples
La session suivante illustre les trois résultats possibles de la commande CAS : non-concordance, concordance et expiration.
127.0.0.1:6379> SET foo bar
OK
127.0.0.1:6379> CAS foo baa bzz
(integer) 0
127.0.0.1:6379> GET foo
"bar"
127.0.0.1:6379> CAS foo bar bzz
(integer) 1
127.0.0.1:6379> GET foo
"bzz"
127.0.0.1:6379> CAS foo bzz too EX 10
(integer) 1
127.0.0.1:6379> GET foo
"too"
Après l'expiration du TTL de 10 secondes, la clé disparaît :
127.0.0.1:6379> GET foo
(nil)
CAD
Compare de manière atomique la valeur actuelle d'une clé avec value et, si elles correspondent, supprime la clé.
Syntaxe : CAD key value
Complexité temporelle O(1)
Paramètres
| Paramètre | Description |
|---|---|
key |
Clé cible de type chaîne |
value |
Valeur actuelle attendue de la clé |
Valeur de retour
| Valeur | Signification |
|---|---|
1 |
La valeur correspondait ; la clé a été supprimée |
0 |
La valeur ne correspondait pas ; la clé est inchangée |
-1 |
La clé n'existe pas |
| Erreur | Autre échec |
Exemples
La session suivante illustre les trois résultats possibles de la commande CAD : non-concordance, clé introuvable et suppression réussie.
127.0.0.1:6379> SET foo bar
OK
127.0.0.1:6379> CAD foo bzz
(integer) 0
127.0.0.1:6379> CAD not-exists xxx
(integer) -1
127.0.0.1:6379> CAD foo bar
(integer) 1
127.0.0.1:6379> GET foo
(nil)