Redis — el cuchillo suizo en memoria.
Redis es una base de datos que vive en RAM. Cero tablas, cero JOINs. Todo son claves que apuntan a valores, pero el valor puede ser una de cinco estructuras muy poderosas. Es rapidísima — milisegundos — y por eso se usa para sesiones, carritos, cachés, colas y rankings.
01Las cinco estructuras
Toda la magia se reduce a esto: una clave (string), un valor (5 sabores posibles).
INCR.02Sintaxis del CLI
Redis no usa SQL. Le hablas con comandos cortos en mayúsculas, separados por espacios:
SET nombre "Ana" GET nombre INCR contador LPUSH cola "tarea1" "tarea2" HSET usuario:1 nombre "Ana" edad 30
Lo verás aún más claro abajo — el lab te deja escribir comandos reales y ver cómo aparecen las claves al instante.
03Tu primer lab Redis
# Una STRING simple SET nombre "Ana" GET nombre # Un contador (también es STRING, pero numérico) SET visitas 0 INCR visitas INCR visitas INCR visitas
SET clave valor y ejecuta.Las claves suelen llevar namespaces con dos puntos: usuario:1, cart:42, post:7:likes. No es obligatorio, pero hace mucho más fácil agrupar y debuggear.
04Caso 1 · HASH Carrito de compras
Un carrito necesita dos cosas: qué productos y cuánta cantidad de cada uno. Eso es literalmente un HASH: cart:userId donde cada field es un producto y el value es la cantidad.
Toca la tienda de la izquierda y mira cómo se construye el HASH en Redis. Cada botón emite el comando que aparece abajo a la derecha.
Podrías usar SET cart:1:sku-42 1, SET cart:1:sku-99 2... pero entonces "ver el carrito completo" necesitaría escanear todas las claves (lento). Con HASH, una sola lectura (HGETALL) trae todo.
05Caso 2 · STRING + TTL Sesión de usuario
Cuando alguien inicia sesión, el servidor genera un token y necesita guardar "a qué usuario pertenece este token, y por cuánto tiempo es válido". Redis es perfecto: clave única + valor + TTL que el motor mismo gestiona.
El truco es el modificador EX seconds al final del SET — la clave se autodestruye. Prueba el flujo en el lab: crea la sesión con TTL, luego consulta cuánto tiempo le queda.
# Crear sesión con TTL de 30 segundos SET session:tok_abc123 "user:ana" EX 30 TTL session:tok_abc123 # Ver el valor GET session:tok_abc123 # Expirar manualmente DEL session:tok_abc123 GET session:tok_abc123
SET clave valor y ejecuta.El TTL aplica a la clave entera, no a campos individuales. Si necesitas que un campo de un HASH expire por separado, conviene usar claves distintas con su propio TTL.
06Caso 3 · INCR Botón de like
Un post que recibe 10.000 likes por segundo es un nightmare para una base relacional: cada UPDATE bloquea filas, los índices se actualizan, hay locks... Redis lo hace en microsegundos porque INCR es atómico y no toca disco.
En el lab de abajo, combinamos un HASH para los contadores y un SET para registrar qué usuarios ya dieron like — así evitamos el like-spam sin lógica extra en el servidor.
# Inicializar contadores del post HSET post:42:stats likes 0 views 1 # Simular likes de distintos usuarios SADD post:42:liked_by "ana" HINCRBY post:42:stats likes 1 SADD post:42:liked_by "luis" HINCRBY post:42:stats likes 1 # Ver estado completo HGETALL post:42:stats SMEMBERS post:42:liked_by
SET clave valor y ejecuta.INCR es atómico: si mil clientes hacen INCR al mismo tiempo, el número final es exactamente mil más. No hay race conditions. Esa propiedad es la que vuelve a Redis ideal para contadores, rate-limiting, locks y semáforos.
07Cuándo Redis, cuándo NO Redis
Redis no reemplaza a una base relacional — la acompaña. Postgres guarda la verdad, Redis guarda lo rápido. La inmensa mayoría de apps grandes usan ambas.