Saltar al contenido

Lección 2 de 21 · Lectura y práctica

Comandos Esenciales de Redis para Operaciones Básicas

Concepto claveRedis es un almacén de estructuras de datos en memoria que funciona como base de datos, caché y agente de mensajes. En producción, dominar sus comandos esenciales es como aprender las herramientas básicas de un.

Del concepto a la práctica

Taller de esta lección

Los comandos se entienden mejor observando cómo cambia el estado. En una cola, LPUSH añade al extremo izquierdo y RPOP retira del derecho; en un hash, cada campo puede actualizarse sin reemplazar todo el registro. El TTL no es una propiedad universal: debes definirlo para cada dato temporal.

Ejemplo resuelto

text
HSET perfil:42 nombre Ana zona norte
HGET perfil:42 nombre
# Ana
LPUSH cola:reportes r-101
LPUSH cola:reportes r-102
LLEN cola:reportes
# 2
RPOP cola:reportes
# r-101

El orden muestra que los trabajos salen primero en entrar, primero en salir cuando se combina LPUSH con RPOP.

Completa el hash con HSET perfil:42 idioma es y prueba HGET perfil:42 zona→norte. Limpia únicamente tus claves de este fixture antes de repetir; una lista con datos previos no tendrá longitud2. HSET conserva el TTL existente, mientras SET sin opciones apropiadas puede quitarlo al reemplazar un string. FIFO aquí describe orden de extracción, no finalización si varios workers tardan tiempos distintos.

Pruébalo

  1. Crea un hash con tres campos de un usuario ficticio.

  2. Recupera solo el campo zona.

  3. Añade dos identificadores a una lista.

  4. Retira uno y mide la longitud restante.

Comprueba tu resultado

Error frecuente: usar GET sobre un hash y concluir que faltan datos. Corrige usando HGET o HGETALL. Resultado esperado: el campo solicitado coincide con la entrada, la lista queda con longitud 1 y el identificador retirado ya no aparece en ella.

Diagrama de decisión con ramas Sí y No y un bucle que procesa cada elemento de una lista.
CursaloMapa de práctica
Cómo avanza un programa

Una condición decide qué camino ejecuta el programa. Un bucle repite una operación mientras queden elementos, y termina cuando la lista se agota. Separar ambas ideas ayuda a seguir el flujo y comprobar casos límite.

Ver la infografía en tamaño completo ↗

Concepto clave

Redis es un almacén de estructuras de datos en memoria que funciona como base de datos, caché y agente de mensajes. En producción, dominar sus comandos esenciales es como aprender las herramientas básicas de un taller: sin ellas, no puedes construir nada sólido. Para un Backend Engineer, estos comandos son el puente entre la teoría y aplicaciones reales como caché, sesiones y colas.

Imagina Redis como una cocina de restaurante: los ingredientes (datos) deben almacenarse, recuperarse y procesarse rápidamente para servir platos (respuestas) a los clientes (usuarios). Los comandos básicos son como las técnicas de corte y cocción: si las dominas, optimizas el flujo de trabajo. En este contexto, nos enfocamos en operaciones para cache (almacenamiento temporal), pub/sub (comunicación en tiempo real) y job queues (procesamiento en cola), que son pilares en backend moderno.

Cómo funciona en la práctica

Vamos a desglosar un ejemplo paso a paso usando comandos para cache. Supón que tienes una aplicación web que necesita cachear resultados de una API costosa. Primero, conecta a Redis desde la terminal o un cliente:

redis-cli

Luego, usa estos comandos esenciales:

  1. SET: Almacena un valor con una clave y tiempo de expiración (TTL). Ejemplo: SET user:123:profile '{"name":"Ana","role":"admin"}' EX 300 guarda datos por 300 segundos.
  2. GET: Recupera el valor. Ejemplo: GET user:123:profile devuelve el JSON.
  3. DEL: Elimina una clave. Ejemplo: DEL user:123:profile borra la entrada del cache.
  4. EXISTS: Verifica si una clave existe. Ejemplo: EXISTS user:123:profile devuelve 1 si existe, 0 si no.

Para pub/sub, usa PUBLISH y SUBSCRIBE. Ejemplo: en una terminal, suscríbete a un canal: SUBSCRIBE notificaciones. En otra, publica un mensaje: PUBLISH notificaciones "Nuevo pedido recibido". El suscriptor recibe el mensaje en tiempo real.

Caso de estudio

Considera una plataforma de e-commerce que usa Redis para cache, sesiones y colas. En un escenario de alto tráfico, como el Black Friday, se aplican comandos esenciales así:

ComponenteComando RedisUso en producción
Cache de productosSET/GET con TTLAlmacena datos de productos populares por 5 minutos para reducir carga en la BD.
Sesión de usuarioSETEX/GETGuarda la sesión del usuario (ej., carrito) con expiración automática tras inactividad.
Cola de pedidosLPUSH/RPOPEncola pedidos nuevos con LPUSH y procesa con RPOP en workers.
En este caso, el uso de TTL en cache evita datos obsoletos, mientras que las colas aseguran procesamiento ordenado bajo carga pico.

Errores comunes

  • No usar TTL en cache: Almacenar datos sin expiración puede llenar la memoria y causar fallos. Solución: Siempre define un TTL con SETEX o el parámetro EX en SET.
  • Confundir estructuras de datos: Usar Strings para listas o Hashes para simples valores reduce eficiencia. Solución: Aprende cuándo usar cada tipo (ej., Hashes para objetos, Lists para colas).
  • Ignorar el manejo de errores en pub/sub: Si un suscriptor se desconecta, puede perder mensajes. Solución: Implementa reconexión automática y logs.
  • No monitorear el uso de memoria: Redis en memoria puede agotarse rápido. Solución: Usa comandos como INFO memory y configura límites.
  • Usar GET/SET para sesiones sin atomicidad: En entornos concurrentes, esto puede causar race conditions. Solución: Usa comandos atómicos como SETNX o transacciones con MULTI/EXEC.

Checklist de dominio

  1. Puedo almacenar y recuperar datos en Redis usando SET y GET con TTL para cache.
  2. Sé implementar una cola simple con LPUSH y RPOP para procesamiento asíncrono.
  3. Puedo configurar pub/sub con PUBLISH y SUBSCRIBE para notificaciones en tiempo real.
  4. Entiendo cuándo usar diferentes estructuras de datos (Strings, Hashes, Lists) según el caso.
  5. Manejo errores comunes como falta de TTL o desbordamiento de memoria.
  6. Verifico la existencia de claves con EXISTS y las elimino con DEL cuando sea necesario.
  7. Uso comandos atómicos para operaciones críticas como sesiones de usuario.

Implementa un sistema de cache y cola con Redis

En este ejercicio, simularás un backend que usa Redis para cachear resultados de una API y manejar una cola de tareas. Sigue estos pasos:

  1. Instala Redis localmente o usa un servicio en la nube. Asegúrate de tener acceso a redis-cli o un cliente similar.
  2. Crea un script o usa la terminal para ejecutar comandos. Primero, cachea un producto: usa SET product:1001 '{"name":"Laptop","price":999}' EX 60 para almacenar por 60 segundos.
  3. Recupera el producto cacheado con GET product:1001 y verifica que devuelva el JSON.
  4. Implementa una cola de pedidos: usa LPUSH orders "pedido_123" para agregar un pedido, luego procesa con RPOP orders para sacarlo.
  5. Configura pub/sub: en una sesión, corre SUBSCRIBE alerts. En otra, publica un mensaje con PUBLISH alerts "Stock bajo en producto 1001".
  6. Monitorea el uso con INFO memory y limpia claves expiradas si es necesario.

Documenta los resultados y reflexiona sobre cómo esto se aplicaría en un entorno de producción real.

Pistas
  • Usa el comando TTL para ver cuánto tiempo queda en el cache antes de expirar.
  • Si RPOP no devuelve nada, verifica que la cola tenga elementos con LLEN.
  • En pub/sub, asegúrate de que ambas terminales estén conectadas al mismo servidor Redis.

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.

Sigue con Redis en Producción: Cache, Sesiones y Colas para Backend Engineers

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.