Operaciones atómicas y hashes con Redis
Bienvenido a este segundo tutorial sobre Redis, si no has visto el primero y te estás iniciando en esta base de datos, te recomiendo que eches un vistazo al primer tutorial en el que explico todos los aspectos básicos para empezar. Si no, quédate por aquí que vamos a ver como realizar operaciones atómicas y a utilizar los hashes con Redis 😉.
Operaciones atómicas
Una operación atómica en Redis es un proceso que siempre se realiza en su totalidad y que si no es así, tiene la capacidad de deshacerse.
Este tipo de operaciones las utilizamos en sistemas de contadores que pueden incrementarse o decrementarse como por ejemplo puede ser un contador de votos en una web.
Para utilizar este tipo de operaciones lo primero que debemos hacer es crear una clave con un valor numérico:
set votos 1
Si queremos incrementar su valor, utilizaremos el comando incr:
incr votos
Esto hará que el valor de votos se incremente en uno.
Si por el contrario queremos decrementar su valor en uno, utilizaremos el comando decr:
decr votos
En el caso de que queramos incrementar los valores en más de uno, tenemos el método incrby en el que le diremos el número en el que queremos incrementar un valor:
incrby votos 3
Este comando sumará tres votos al número actual guardado en votos.
También tenemos la opción de decrementar un valor con decrby:
decrby votos 2
Hash
Las operaciones hash las utilizamos para crear agrupaciones de claves valor agrupadas por una clave principal. Esto nos permite agrupar con una sola clave cosas similares y obtener esa información realizando una única lectura. El inconveniente de esto es que no podemos definir un tiempo de vida individual por cada clave del hash sino que tendrá que ser único para todo el grupo.
Crear un hash
Para crear un hash utilizaremos el comando hset seguido del nombre del hash y de las claves valor que quieras añadir. Ejemplo:
hset usuarios:1 nombre "Alber"
Aquí estamos creando un hash llamado usuarios:1 que contendrá una clave llamada nombre con el valor Alber.
Si queremos añadir varios conjuntos de clave valor, utilizaremos hmset:
hmset post:1 titulo "Mi primer post" creador "Alber"
En este caso, creamos un hash llamado post:1 que contiene una clave llamada título con el valor Mi primer post y otra clave llamada creador con el valor Alber.
Recuperar los campos de un hash
Si queremos recuperar la información de un solo campo, utilizaremos hget:
hget post:1 titulo
En el caso de que queramos recuperar toda la información de un hash, utilizaremos el comando hgetall y la clave del hash:
hgetall post:1
También podemos obtener la longitud de un hash con hlen:
hlen post:1
Para obtener todas las claves de un hash utilizaremos hkeys para obtener todos los valores de un hash usaremos hvals:
hkeys post:1
hvals post:1
Si queremos verificar la existencia de una clave en un hash, utilizaremos el comando hexists:
hexists post:1 existo
Operaciones atómicas con hash
Para los elementos de un hash también podemos realizar operaciones atómicas con hincrby para incrementar los valores de la siguiente forma:
hincrby post:1 views 3
A parte de las ya mostradas, puedes ver más comandos de hash utilizando el comando de ayuda de Redis:
help @hash
Conclusiones
Gracias a las operaciones atómicas podremos tener contadores 100% confiables en nuestros proyectos y gracias a las agrupaciones por hash podremos organizar mejor la información de nuestros datos lo que nos facilitará el trabajo.
Espero que este post te ayude y como siempre, te recomiendo seguirme en Twitter para estar al tanto de los nuevo contenido. Ahora también puedes seguirme en Instagram donde estoy subiendo tips, tutoriales en vídeo e información sobre herramientas para developers.
Por último os dejo mi guía para aprender a trabajar con APIs donde explico todo el funcionamiento de una API, el protocolo HTTP y veremos como construir una API con arquitectura REST.
Nos leemos 👋.