Skip to main content
[ PIER ]

Redis

El almacén de datos en memoria que mueve media internet.

Database Listo para clúster #cache#nosql#key-value

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. 1 Abre el panel de Pier y haz clic en Add service.
  2. 2 Elige Redis en la lista de plantillas.
  3. 3 Elige la versión, asigna un nombre al servicio y Pier provisionará automáticamente el contenedor, el almacenamiento y los puertos.
  4. 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

Patrón básico de caché bash
# SET con TTL — caché de 60 segundos
redis-cli SET user:42:profile '{"name":"Aleksandr"}' EX 60

# GET
redis-cli GET user:42:profile
Contador atómico (page views, rate limit) bash
# 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
Leaderboard con sorted set bash
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
Stream con grupo de consumidores bash
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?
Desde marzo 2024, Redis pasó a la licencia dual source-available SSPL/RSALv2. La imagen Docker oficial `redis` sigue funcionando y Pier la despliega. Si quieres OSS estricto, usa la plantilla Valkey — es un fork BSD mantenido por la Linux Foundation y API-compatible.
¿Perderé datos si el contenedor reinicia?
Por defecto Redis persiste vía snapshots RDB (cada pocos minutos) + AOF (archivo append-only). Pier monta /data como volumen persistente, así que los reinicios preservan el estado. Para durabilidad crítica, configura `appendfsync always`.
¿Cuánta memoria debo asignar?
La suma de tu dataset caliente + 25% de margen. Configura `maxmemory` y `maxmemory-policy allkeys-lru` para desalojar claves viejas antes del OOM. Los límites de recursos en la configuración del servicio de Pier controlan la memoria del contenedor.
¿Puedo correr Redis como clúster?
Todavía no vía esta plantilla — Redis Cluster requiere setup multi-puerto especial. Por ahora la plantilla corre un solo nodo. Usa la plantilla Valkey si quieres funcionalidad similar con licencia OSS.
¿Cómo conecto desde mi aplicación?
Usa el connection string que Pier muestra en la página del servicio — típicamente `redis://:password@host:6379`. Cada lenguaje principal tiene un cliente (jedis, ioredis, redis-py, redis-rs, lettuce).
¿Contraseña por defecto?
Pier genera una contraseña aleatoria fuerte (variable de entorno REDIS_PASSWORD) en la creación. Visible en la página de detalle del servicio; rótala vía la acción de cambio de contraseña.
Pub/Sub vs Streams — ¿cuál?
Pub/Sub es fire-and-forget (sin persistencia, sin grupos de consumidores). Streams persisten mensajes y soportan grupos de consumidores con replay y acks — más cercano a la semántica de Kafka. Usa Streams cuando perder un mensaje sea un problema.

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 →