logo cosasdedevs

Primeros pasos con Redis

Primeros pasos con Redis

My Profile
Nov 01, 2020

¡Hola! En breve voy a cambiar de trabajo y una de las nuevas tecnologías con las que voy a trabajar es Redis. Al no haber trabajado con esta base de datos hasta ahora, decidí ponerme manos a la obra y aprender como utilizarla y ahora que ya tengo algunas nociones voy a crear una serie de tutoriales para que vosotr@s también os podáis iniciar en esta base de datos 😎.

Pero antes de empezar...

¿Qué es Redis?

Como dice la Wikipedia, Redis es un motor de base de datos noSQL en memoria, basado en el almacenamiento en tablas de hashes (clave/valor) pero que opcionalmente puede ser usada como una base de datos durable o persistente.
 

Instalar Redis

Podéis descargar e instalar Redis en vuestro equipo ya sea Windows, Linux o Mac desde aquí. Sin embargo para este tutorial vamos a utilizar Docker, ya que es más rápido y sencillo. Para este tutorial no hace falta que tengáis conocimientos de Docker, solo tenéis que instalarlo y seguir los pasos que describo a continuación:

Para utilizar Redis desde Docker primero tendremos que descargar la imagen, para ello lanzamos el siguiente comando:

docker pull redis:latest

Una vez hecho esto, levantaremos el contenedor con el siguiente comando:

docker run --rm -p 6379:6379 --name testredis redis

Con este comando crearemos un contenedor que eliminará toda su información al cerrarlo. Accederemos a él desde el puerto 6379, llamaremos al contenedor testredis y utilizará la imagen de Redis que hemos descargado anteriormente.

Ahora solo necesitamos crear una nueva pestaña en nuestro terminal y lanzar el siguiente comando para acceder a la consola de Redis:

docker exec -it testredis redis-cli

Guardar y leer valores

Ahora que ya tenemos nuestra base de datos operativa es hora de ver como crear datos en ella. Para ella utilizaremos el comando set y añadiremos la clave y el valor de esta forma:

set <clave> <valor>

Ejemplo:

set nombre Alber

Este comando creará una clave nombre con el valor Alber. Si necesitamos añadir espacios tanto en la clave como en el valor, deberemos añadir la información entre comillas:

set dato "Hola Mundo"
set "hola mundo" dato

Si queremos sobreescribir una clave ya existente, solo tenemos que volver a lanzar el set con la clave y el nuevo valor, esto hará que se sobreescriba el valor de esa clave.

Propiedades de las claves y los valores

Las claves y los valores siempre se guardarán como strings.

Ambas pueden tener un tamaño máximo de 512MB.

Se aconseja que si creas claves con varios puntos de información sean separados por dos puntos. Ejemplo: posts:1:titulo.

Se puede crear un máximo de 2^32 claves (4 mil millones) (no está mal ¿Eh?).

Para recuperar los valores guardados anteriormente solo necesitaremos utilizar el comando get y el nombre de la clave:

get nombre

Aquí nos devolverá Alber que fue el dato que guardamos anteriormente.

Funcionalidades extra al guardar una clave

Cuando creamos una clave podemos añadir parámetros extra para cambiar su funcionalidad, estos son los parámtros NX y XX.

Cuando seteemos una clave si añadimos al final el parámetro NX, esto hará que si existe el registro no lo sobreescriba.

set <nombre-clave> <nombre-valor> NX

Si lo que queremos es que solo se sobreescriba un valor si la clave ya existe, utilizaremos el parámetro XX. Si la clave no existe no la creará si utilizamos este parámetro.

set <nombre-clave> <nombre-valor> XX

Borrar claves

Si queremos borrar una o varias claves existentes utilizaremos el comando del. Solo necesitamos escribir del y la clave o claves que queremos eliminar separadas por espacios:

del <nombre-clave1> <nombre-clave2> <nombre-clave3> etc.

Tiempo de vida de una clave

Cuando seteamos una clave, tenemos la opción de darle un tiempo de vida. Esto lo podemos hacer con el comando EX para definir un tiempo por segundos y PX para definirlo por milisegundos.

set <nombre-clave> <dato> EX 10

En este caso le decimos que la clave tendrá un tiempo de vida de 10 segundos. Una vez pasado ese tiempo dejará de existir.

Si lo queremos hacer por milisegundos la crearemos de la siguiente forma:

set <nombre-clave> <dato> PX 10

Si ya creamos una clave pero se nos olvidó definir un tiempo de vida en la creación, podemos hacerlo a posteriori con el comando expire para los segundos y pexpire si lo que queremos es usar milisegundos:

expire <nombre-clave> 10

También puede pasar que creamos una clave con un tiempo de vida definido pero cambiemos de idea y no queramos que se elimine pasado ese tiempo. Para resolver ese problema, utilizaremos el comando persist:

persist <nombre-clave>

A veces vamos a definir claves y necesitaremos saber el tiempo de vida que le queda, para verlo utilizaremos los comandos ttl para ver el tiempo que le queda en segundos y pttl para que nos lo muestre en milisegundos:

ttl <nombre-clave>

Realizar búsquedas en Redis con SCAN

Si queremos realizar búsquedas de claves en Redis, podemos utilizar el comando scan, este nos permite pasar una paginación, textos con los que realizar match y el número de datos por página. Para realizar una búsqueda de una clave que empiece por la palabra test lo podemos hacer de la siguiente forma:

scan 0 match test* count 3

El primer parámetro que pasamos es el número de la página, en este caso queremos la primera así que pasamos el número 0. Para buscar sobre una palabra primero debemos escribir match y después escribiremos la expresión regular, en este caso test* porque queremos todas las claves que empiecen por la palabra test. Por último añadimos el count para limitar la respuesta a 3 resultados. Si quisiéramos ver los siguientes tres resultados deberemos cambiar el cursor o paginación al número siguiente, en este caso el 1. Ejemplo:

scan 1 match test* count 3

Conclusiones

Este tutorial ha sido una iniciación en Redis, como veis es bastante sencillo trabajar con esta base de datos. En los siguientes tutoriales seguiremos profundizando sobre que podemos hacer con Redis y más adelante veremos casos de uso prácticos para que podamos ver todo su potencial 💪.

Como siempre, os recomiendo seguirme en Twitter y nos vemos en el siguiente tutorial 👋.

Nos tomamos en serio tu privacidad

Utilizamos cookies propias y de terceros para mejorar la experiencia del usuario a través de su navegación. Si pulsas entendido aceptas su uso. Ver política de cookies.

🐍 Sígueme en Twitter

Si te gusta el contenido que subo y no quieres perderte nada, sígueme en Twitter y te avisaré cada vez que cree contenido nuevo 💪
Luego ¡Te sigo!