Volver a Redis Básico
Introducción a Redis
¿Qué es Redis?
Redis (Remote Dictionary Server) es un almacén de estructuras de datos en memoria usado como base de datos, caché, broker de mensajes y motor de streaming. Características clave:
- En memoria: latencia de sub-milisegundo
- Persistencia: snapshots RDB y AOF opcionales
- Tipos de datos ricos: Strings, Hashes, Lists, Sets, Sorted Sets, Streams, HyperLogLog
Inicio Rápido con Docker
services:
redis:
image: redis:7-alpine
command: redis-server --requirepass "tupassword" --appendonly yes
ports:
- "6379:6379"
volumes:
- redis_data:/data
volumes:
redis_data:
Comandos Básicos de redis-cli
# Conectar
redis-cli -h localhost -p 6379 -a tupassword
# Estado del servidor
PING → PONG
INFO server
INFO memory
DBSIZE → número de claves
Strings — El Tipo Universal
# SET y GET
SET nombre "Alicia"
GET nombre # "Alicia"
# Incremento/decremento atómico
SET contador 0
INCR contador # 1
INCRBY contador 5 # 6
DECR contador # 5
INCRBYFLOAT precio 1.25
# Expiración
SET token_sesion "abc123" EX 3600 # expira en 3600 segundos
SET token "xyz" PX 60000 # expira en 60000 milisegundos
TTL token_sesion # segundos restantes
# Modificadores NX / XX
SET usuario:1 "Alicia" NX # solo si NO existe
SET usuario:1 "Roberto" XX # solo si YA EXISTE
# Operaciones masivas
MSET clave1 val1 clave2 val2 clave3 val3
MGET clave1 clave2 clave3
Convención de Nomenclatura de Claves
# Usar ':' como separador de namespace
usuario:1001:nombre
usuario:1001:email
producto:42:precio
sesion:abc123
cache:busqueda:smartphones:pagina:1
Gestión de Claves
# Verificar existencia
EXISTS usuario:1001 # 1 (sí) o 0 (no)
# Eliminar
DEL usuario:1001
DEL clave1 clave2 clave3
# Escanear por patrón (nunca usar KEYS en producción)
SCAN 0 MATCH "usuario:*" COUNT 100
# Tipo de dato
TYPE contador # string
TYPE miset # set
# Renombrar
RENAME clave_vieja clave_nueva
# Persistir (quitar TTL)
PERSIST token_sesion
Persistencia de Datos
# redis.conf
save 900 1 # guardar si >= 1 cambio en 900s
save 300 10 # guardar si >= 10 cambios en 300s
appendonly yes
appendfsync everysec # fsync cada segundo (recomendado)
# Snapshot manual
BGSAVE
# Último guardado
LASTSAVE