CAS (Compare And Set) y CAD (Compare And Delete) son comandos condicionales atómicos para cadenas nativas de Redis en instancias Tair. CAS actualiza el valor de una clave solo cuando coincide con el valor esperado; CAD elimina una clave únicamente si su valor coincide.
Requisitos previos
Antes de empezar, asegúrese de que cuenta con lo siguiente:
Una instancia Tair basada en DRAM o optimizada para memoria persistente que ejecute la versión menor 1.2.3 o posterior.
(Recomendado) Actualizar la instancia a la versión menor más reciente para obtener funciones adicionales y mayor estabilidad. Consulte Actualizar la versión menor de una instancia.
(Para instancias en clúster o con división de lectura/escritura) Actualizar los nodos proxy a la versión menor más reciente para garantizar que todos los comandos se ejecuten correctamente.
Descripción general de los comandos
|
Comando |
Sintaxis |
Descripción |
|||
|
CAS |
|
PX |
EXAT |
PXAT time]` |
Compara el valor actual de la clave con |
|
CAD |
|
Compara el valor actual de la clave con |
Convenciones de sintaxis
|
Notación |
Significado |
|
|
|
Palabra clave del comando |
|
|
|
Variable: reemplace por un valor real |
|
|
|
Parámetro opcional; los parámetros sin corchetes son obligatorios |
|
|
|
B` |
Exclusión mutua: especifique solo uno |
|
|
El parámetro se puede repetir |
CAS
Compara atómicamente el valor actual de una clave con oldvalue y, si coinciden, lo reemplaza por newvalue.
Sintaxis: CAS key oldvalue newvalue [EX|PX|EXAT|PXAT time]
Complejidad temporal O(1)
Parámetros
|
Parámetro |
Descripción |
|
|
Clave destino de tipo cadena |
|
|
Valor actual esperado de la clave |
|
|
Valor que se establecerá si |
|
|
Caducidad relativa en segundos. |
|
|
Caducidad relativa en milisegundos. |
|
|
Caducidad absoluta como marca de tiempo Unix en segundos. |
|
|
Caducidad absoluta como marca de tiempo Unix en milisegundos. |
Si la clave tiene un tiempo de vida (TTL) y ejecuta CAS sin un parámetro de caducidad, se elimina el TTL y la clave no caducará.
Valor de retorno
|
Valor |
Significado |
|
|
El valor coincidió; clave actualizada |
|
|
El valor no coincidió; clave sin cambios |
|
|
La clave no existe |
|
Error |
Otro fallo |
Ejemplos
La siguiente sesión demuestra los tres resultados posibles de CAS: falta de coincidencia, coincidencia y caducidad.
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"
Después de que expire el TTL de 10 segundos, la clave desaparece:
127.0.0.1:6379> GET foo
(nil)
CAD
Compara atómicamente el valor actual de una clave con value y, si coinciden, elimina la clave.
Sintaxis: CAD key value
Complejidad temporal O(1)
Parámetros
|
Parámetro |
Descripción |
|
|
Clave destino de tipo cadena |
|
|
Valor actual esperado de la clave |
Valor de retorno
|
Valor |
Significado |
|
|
El valor coincidió; clave eliminada |
|
|
El valor no coincidió; clave sin cambios |
|
|
La clave no existe |
|
Error |
Otro fallo |
Ejemplos
La siguiente sesión demuestra los tres resultados posibles de CAD: falta de coincidencia, clave no encontrada y eliminación exitosa.
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)