Comandos Esenciales de Redis para Operaciones Básicas

Lectura
20 min~4 min lectura

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.