Redis
El almacén de datos en memoria que mueve media internet.
Redis es un almacén de datos en memoria clave-valor con soporte de primer nivel para strings, listas, sets, sorted sets, hashes, streams y pub/sub. Es la caché por defecto para aplicaciones web, el broker de mensajes por defecto para trabajos en segundo plano y el almacén de sesiones por defecto para casi todo.
Desplegar con Pier
- 1 Abre el panel de Pier y haz clic en Add service.
- 2 Elige Redis en la lista de plantillas.
- 3 Elige la versión, asigna un nombre al servicio y Pier provisionará automáticamente el contenedor, el almacenamiento y los puertos.
- 4 Vincula un dominio si quieres HTTPS. Traefik genera el certificado de Let's Encrypt automáticamente.
¿Qué es Redis?
Redis (Remote Dictionary Server) es la base de datos en memoria de facto de la web moderna. Sitios de cualquier escala lo usan: como caché para descargar trabajo de la base de datos principal, como almacén de sesiones, como broker de colas de mensajes, como contador en tiempo real y como canal pub/sub entre servicios.
Su API es mínima — unos 200 comandos repartidos en un puñado de estructuras de datos — pero esos primitives se combinan en patrones sorprendentemente potentes. INCR para contadores y rate limiters. ZADD para leaderboards. LPUSH/RPOP para colas. Pub/Sub para fanout. Streams para logs estilo Kafka. EXPIRE en cada clave para cleanup automático.
Cómo lo despliega Pier
Pier usa la imagen Docker oficial redis con redis-server --requirepass
para forzar autenticación por contraseña. El volumen de datos se monta en
/data, donde persisten los snapshots RDB y el archivo AOF. La versión por
defecto es latest (actualmente Redis 8 con soporte RESP3); 7-alpine
también está disponible para compatibilidad estricta 7.x.
Los backups capturan tanto el RDB como el AOF. Los connection strings se
construyen automáticamente en la página del servicio como
redis://:password@host:6379 — pégalo directamente en la config de tu app.
Cuándo NO usar Redis
Para almacenamiento durable a largo plazo de registros de negocio — usa
PostgreSQL. Para contenido que debe sobrevivir a un reinicio de contenedor
con garantías estrictas de durabilidad, configura appendfsync always
(más lento) o muévete a Postgres. Para aislamiento multi-tenant en SaaS,
usa row-level security de Postgres — las DBs de Redis (DB 0-15) no son una
frontera de seguridad.
Características clave
Latencia sub-milisegundo
Las operaciones en memoria terminan en microsegundos. La persistencia a disco (snapshots RDB + AOF) es asíncrona y configurable.
Estructuras de datos ricas
No solo strings — listas, sets, sorted sets (ZSET), hashes, bitmaps, HyperLogLog, índices geoespaciales, streams y canales pub/sub.
Operaciones atómicas
INCR, LPUSH, SADD, ZADD son atómicas a nivel de motor. No se necesita locking del lado del cliente para contadores, colas, leaderboards, rate-limiters.
Scripting Lua y transacciones
EVAL ejecuta scripts Lua atómicamente — lógica multi-paso completa sin idas y vueltas. MULTI/EXEC encapsula varios comandos en un bloque atómico.
Pub/Sub y streams
Pub/sub integrado para fanout. Redis Streams ofrecen logs append-only estilo Kafka con grupos de consumidores, replay y acks — sin operar un clúster Kafka.
TTL en cada clave
Establece expiración por clave con EXPIRE. Perfecto para sesiones, tokens de reset, claves de idempotencia, cachés cortos.
Casos de uso
Caché de aplicación
Reduce la carga de la base de datos en 90%+ cacheando queries caras, vistas computadas y plantillas renderizadas.
Almacén de sesiones
Mueve sesiones fuera de cookies y de Postgres a Redis. Lecturas sub-ms, expiración automática, compartido entre múltiples servidores de app.
Cola de jobs en background
Sidekiq (Ruby), Celery (Python), Bull (Node.js), Resque, RQ — la mayoría de las colas de jobs populares usan Redis como broker.
Rate limiting
Token bucket / sliding window vía INCR + EXPIRE. Unas pocas líneas de código; sobrevive a cualquier pico de tráfico.
Leaderboards y contadores en tiempo real
ZSET maneja leaderboards ordenados con millones de entradas; ZINCRBY actualiza ranks en O(log N).
Ejemplos de código
# SET con TTL — caché de 60 segundos
redis-cli SET user:42:profile '{"name":"Aleksandr"}' EX 60
# GET
redis-cli GET user:42:profile # Incremento atómico; seguro bajo concurrencia alta
redis-cli INCR views:home
# Sliding-window rate limit (60 peticiones/min por IP)
redis-cli SET ratelimit:$IP 0 EX 60 NX
redis-cli INCR ratelimit:$IP redis-cli ZADD leaderboard 100 alice 95 bob 88 carol
# Top 3
redis-cli ZREVRANGE leaderboard 0 2 WITHSCORES
# Bump atómico de rank
redis-cli ZINCRBY leaderboard 25 alice redis-cli XADD events '*' type signup user 42
redis-cli XGROUP CREATE events workers '$' MKSTREAM
redis-cli XREADGROUP GROUP workers w1 COUNT 10 STREAMS events '>' Comparativa
| vs Memcached | Memcached es más simple pero limitado a strings y sin persistencia, replicación, pub/sub o streams. Redis cubre el caso de uso de Memcached más todo lo demás. |
| vs Valkey | Valkey es el fork open-source (BSD) de Redis tras el cambio de licencia en marzo 2024. API-compatible; elige Valkey si quieres mantenerte en un camino totalmente OSS. Pier incluye ambos. |
| vs KeyDB | Fork multi-thread de Redis. Pier no incluye una plantilla de KeyDB por defecto — usa una plantilla Docker personalizada si la necesitas. |
| vs RabbitMQ para colas | RabbitMQ gana en semántica de routing AMQP pesado. Redis (con Streams o Bull/Sidekiq) gana en simplicidad, latencia y footprint operativo para el caso típico de jobs en background. |
Preguntas frecuentes
¿Sigue siendo Redis open source?
¿Perderé datos si el contenedor reinicia?
¿Cuánta memoria debo asignar?
¿Puedo correr Redis como clúster?
¿Cómo conecto desde mi aplicación?
¿Contraseña por defecto?
Pub/Sub vs Streams — ¿cuál?
Servicios relacionados
Desplegar en tu VPS
Redis es un almacén de datos en memoria clave-valor con soporte de primer nivel para strings, listas, sets, sorted sets, hashes, streams y pub/sub. Es la caché por defecto para aplicaciones web, el broker de mensajes por defecto para trabajos en segundo plano y el almacén de sesiones por defecto para casi todo.
Desplegar este servicio →