Volver al blog

¿Qué es Redis? Y cuándo deberías usarlo

En este artículo, vamos a hablar sobre Redis, un almacén de datos NoSQL de código abierto, en memoria y de tipo clave-valor que deberías conocer, y cuándo deberías usarlo.

¿Qué es Redis?

Redis es un almacén de datos NoSQL de código abierto, en memoria y de tipo clave-valor, creado por Salvatore Sanfilippo en el año 2009, cuando él y el co-fundador de su startup italiana se enfrentaron a un problema de escalabilidad en sus servicios de Web 2.0.

El nombre Redis significa Remote Dictionary Server. Pasó el tiempo, se hicieron mejoras y hoy Redis se usa como cache, base de datos, message broker, cola, y motor de streaming.

¿Cómo funciona Redis?

Redis funciona dentro de la memoria del servidor, lo que significa que puede entregar respuestas en cuestión de submilisegundos, también puede ser persistente volcando el dataset al disco.

Redis te permite guardar estructuras de datos como strings, listas, hashes, bitmaps, índices geoespaciales, y streams. Y podés ejecutar operaciones atómicas como agregarle algo a un string, agregar un string a una lista, o sumarle un valor incremental a un hash.

¿Redis es gratis?

Redis es un proyecto de código abierto y es gratis. Pero también tiene su edición enterprise que es paga, la podés probar gratis por 14 días con algunas limitaciones y sin soporte. Para uso comercial, vas a necesitar una Enterprise Edition que es de código cerrado y requiere una licencia comercial de Redis Ltd.

¿Redis es de un solo hilo?

Redis es single-threaded, lo que significa que no podés ejecutar dos comandos al mismo tiempo, tenés que esperar a que termine uno para ejecutar el siguiente.

¿Redis es distribuido?

Redis es un servidor centralizado remoto, lo que significa que una sola instancia de Redis está limitada por la memoria máxima de tu servidor. Las empresas grandes tienden a usar más de una instancia de Redis y distribuir las consultas entre ellas.

Sin embargo, hay una solución llamada Redis Cluster.

¿Qué es Redis Cluster?

Redis Cluster es una solución que te permite instalar instancias de Redis como masters o slaves. Cada slave va a tener su instancia master. Las instancias mínimas de Redis que vas a necesitar para usarlo son tres masters y tres slaves.

¿Dónde puede instalarse Redis?

Redis se puede instalar en un sistema basado en linux. Pero si estás usando windows, no te preocupes, podés poner tu implementación de Redis en un Contenedor de Docker. (Por suerte para vos, acá tenés un pequeño tutorial sobre cómo descargar e instalar Docker)

Haciendo una implementación de Redis en Docker

Para instalar Redis en un nuevo contenedor de docker podemos abrir un PowerShell y hacer lo siguiente:

PS> docker network create -d bridge rediscon 
# Esto va a configurar una nueva conexión bridged desde el contenedor

PS> docker run -d -p 6379:6379 --name redisimplementation --network rediscon redis 
# Docker ya tiene una imagen de Redis en su servidor con la última versión de Redis, así que al hacer esto, estás descargando esa imagen y corriendo el contenedor con la red que declaramos antes. 

# Ahora te podés conectar a tu implementación local de redis así:
PS> docker exec -it redisimplementation  bash

# Entremos a nuestro redis-cli
root@f577b2322a65:/data# redis-cli

# Y ahora insertemos y obtengamos una variable
127.0.0.1:6379> set val "Redis Tutorial"
OK
127.0.0.1:6379> get val
"Redis Tutorial"

# Y por último, insertemos y obtengamos una lista
127.0.0.1:6379> rpush list "This"
(integer) 1
127.0.0.1:6379> rpush list "is a Redis"
(integer) 2
127.0.0.1:6379> rpush list "Tutorial"
(integer) 3

127.0.0.1:6379> lrange list 0 2
1) "This"
2) "is a Redis"
3) "Tutorial"

¿Cómo accedo a estos datos desde afuera del contenedor de Redis?

Asumiendo que sabés algo de programación en python, por ejemplo, podríamos hacer algo así:

import redis
r = redis.Redis(
    host='127.0.0.1',
    port=6379
)

print(r.get('val'))

print(r.lrange('list',0,2))

Aunque este no pretende ser un artículo de programación, no me gusta dejarte cabos sueltos y espero que puedas hacer algo con toda la información que escribo.

¿Cuándo debería usar Redis?

Deberías usar Redis cuando tu aplicación necesita acceder a los datos muy rápido sin demoras, es una excelente base de datos NoSQL en la que podés confiar y puede ser un aliado a la hora de optimizar tus apps. A veces, necesitamos que se acceda a los datos al instante, como en aplicaciones de Chat, Streaming de Media, guardado de Sesiones y código de Machine Learning que tiene datasets grandes y que usando una base de datos convencional tardaría mucho tiempo.

Acá es cuando Redis aparece como una herramienta potencial y poderosa para ayudarnos.

Además, podés leer más sobre Redis en su documentación.

Como siempre, espero que encuentres útil esta reseña y puedas usar Redis en tu próximo proyecto.

Read in English