volver DECR

Volver Decr



Manipulación de enteros de Redis

El tipo de cadena es el tipo de datos más fundamental que ofrece Redis. Las cadenas Redis son capaces de almacenar textos, objetos JSON serializados, imágenes, audio e incluso valores numéricos. En esta guía, nos centraremos en los valores numéricos y la manipulación de números enteros. Redis no admite los tipos de datos enteros separados para contener los datos numéricos. Si una clave de Redis contiene una cadena que se puede representar como un número entero, Redis puede interpretar los valores numéricos como números enteros de base 10 de 64 bits con signo.


La manipulación de números es una característica extremadamente útil para tener en cualquier base de datos. Redis ofrece varias operaciones útiles para trabajar con tipos enteros como INCR, DECR, INCRBY, etc. En esta guía, se explica en detalle el comando DECR que opera con tipos enteros.







El comando DECR

El comando DECR se introduce para disminuir en uno un valor numérico que se almacena en una tecla determinada. Esto funciona solo en valores de cadena que se pueden representar como un entero de base 10 de 64 bits. El comando DECR arroja un error para valores que no son de cadena o valores de cadena que no se pueden representar como enteros.



La siguiente es la sintaxis del comando DECR:



tecla DECR

 
Llave: La clave que contiene el valor de cadena.





El comando DECR devuelve el entero con signo resultante después de la operación de decremento. Si la clave especificada no existe, el comando establece el valor en 0 y luego lo disminuye en uno. Además, se genera un error cuando el valor no es una cadena o no se puede representar como un entero de 64 bits con signo. Este comando opera con una complejidad de tiempo constante (O(1)) que es extremadamente rápida.

Caso de uso: disminuir la salud del jugador en un juego en línea

Supongamos un juego en línea donde la salud de cada jugador se incrementa en uno cuando se revela un botiquín. Del mismo modo, la salud disminuye en uno si el jugador se cae o es golpeado por otro jugador.



El candidato ideal para almacenar la salud de un jugador es un tipo de cadena Redis donde podemos almacenar la salud como un número entero. Vamos a crear una clave salud: ID del jugador: 1 y establezca su valor en 10. Podemos usar el comando SET de la siguiente manera:

establecer salud:ID del jugador: 1 10

 

Podemos usar el comando GET para verificar el valor almacenado en salud: ID del jugador: 1.

obtener salud:ID del jugador: 1

 

Digamos que el jugador con ID 1 recibe un golpe y la salud debería disminuir en uno. El comando DECR se puede utilizar de la siguiente manera:

decr salud:ID del jugador: 1

 
Como era de esperar, el comando DECR imprime el valor actualizado después de la operación de decremento como se muestra en la siguiente figura:


Además, podemos inspeccionar el valor almacenado en la clave salud: ID del jugador: 1 con el comando OBTENER.

obtener salud:ID del jugador: 1

 

Como era de esperar, el valor disminuyó en uno.

El operador DECR también es válido con números negativos. Almacenemos un nuevo valor numérico negativo en la tecla negativo:valor1 .

establecer negativo:valor1 -3

 
Podemos inspeccionar el valor usando el comando GET de la siguiente manera:

obtener negativo: valor1

 

El siguiente comando muestra cómo se usa el comando DECR en la tecla negativo:valor1:

decr negativo:valor1

 

El comando DECR en valores no enteros

Hay algunos casos extremos cuando intentamos usar el comando DECR en una clave de Redis que contiene un tipo de datos que no es una cadena o una cadena que no se puede representar como un número entero. El comando DECR arroja un error en esos casos, como se muestra en el siguiente ejemplo:

establecer notAnIntergerVal Hola

 
El 'Hola' es un texto que no se puede convertir a un entero con signo. Entonces, el comando DECR arroja un error si lo llamamos contra esta tecla.

decr notAnIntergerVal

 

El comando DECR en claves no existentes

En algunos casos, puede llamar al comando DECR en una clave que no existe en el almacén de datos de Redis. Entonces, el comando crea la clave especificada y establece su valor en el número entero 0. Al mismo tiempo, el valor se reduce en uno.

decr clave no existente

 
Como se esperaba, la salida es -1.


En general, el comando DECR es muy útil para implementar los contadores en aplicaciones de baja latencia.

Conclusión

En resumen, DECR es uno de los comandos que operan en valores numéricos que se almacenan en una tecla Redis dada. Redis no admite un tipo de datos entero independiente. Entonces, el tipo de cadena también se usa para contener los valores numéricos. Como se examinó, si el valor de la cadena se puede representar como un entero con signo de 64 bits, el comando DECR se puede usar para disminuir su valor. Lo más importante es que opera con una complejidad de tiempo constante. Además, el comando DECR se usa ampliamente para implementar los contadores.