- Conceptos Fundamentales de Redis
Redis es un almacén de datos en memoria que opera bajo un modelo de clave-valor (key-value). A diferencia de soluciones como memcached, Redis puede persistir los datos de forma asincrónica mediante snapshots o registros (AOF), almacenándolos en el sistema de archivos. Es un proceso único que gestiona todas las solicitudes y soporta una arquitectura maestro-esclavo. Puede manejar cientos de miles de consultas por segundo (QPS) y escucha por defecto en el puerto TCP 6379.
- Instalación y Configuración
En Linux (Debian/Ubuntu):
sudo apt update && sudo apt install redis-server
Un ejemplo básico de configuración en /etc/redis/redis.conf podría incluir:
bind 127.0.0.1 ::1
port 6379
tcp-backlog 511
requirepass miClaveSegura
# Guardar snapshot cada 15 minutos si hay al menos 1 cambio
save 900 1
databases 16
Para iniciar el servicio y verificar el estado:
sudo systemctl start redis-server
sudo systemctl status redis-server
- Conexión y Operaciones Básicas
Para conectarse al servidor, se puede usar el cliente de línea de comandos:
redis-cli -h 127.0.0.1 -p 6379 -a miClaveSegura
Una vez conectado, se selecciona una de las 16 bases de datos disponibles (índices de 0 a 15):
SELECT 0
Para vaciar la base de datos actual o todas, se usan los comandos de precaución:
FLUSHDB
FLUSHALL
La guía de ayuda se puede explorar por grupos de comandos o por comando individual:
HELP @string
HELP GET
- Comandos Esenciales y Tipos de Datos
Los comandos básicos para manipular datos incluyen:
SET usuario "Juan"
GET usuario
SETNX contador 100 # Establece el valor solo si la clave no existe
INCR contador
DEL usuario
EXISTS contador
KEYS user*
Redis soporta cinco tipos de datos principales para el valor (value) de una clave:
- Cadena (string): Secuencia de bytes. Es el tipo más simple. ```
SET producto "Laptop" EX 3600 # Expira en 1 hora
- Lista (list): Secuencia ordenada de cadenas. Se puede manipular desde ambos extremos. ```
LPUSH tareas "Comprar víveres"
RPUSH tareas "Estudiar Redis"
LRANGE tareas 0 -1 # Obtiene todos los elementos
- Conjunto (set): Colección desordenada de cadenas únicas. Permite operaciones de teoría de conjuntos. ```
SADD etiquetas "backend" "devops"
SISMEMBER etiquetas "backend"
SADD otras_etiquetas "frontend" "devops"
SINTER etiquetas otras_etiquetas # Intersección
- Conjunto ordenado (sorted set): Similar al set, pero cada miembro tiene un puntaje (score) para ordenamiento. ```
ZADD leaderboard 1500 "JugadorA"
ZADD leaderboard 2100 "JugadorB"
ZRANGE leaderboard 0 -1 WITHSCORES # Ordena por puntaje ascendente
- Hash: Mapa de pares campo-valor dentro de una sola clave. ```
HSET usuario:1 nombre "Ana" edad 30 email "ana@ejemplo.com"
HGET usuario:1 nombre
HGETALL usuario:1
- Transacciones y Comandos del Servidor
Las transacciones en Redis permiten ejecutar un bloque de comandos de manera atómica.
MULTI
SET contador 10
INCR contador
EXEC # Ejecuta los comandos encolados
Comandos útiles para gestionar la conexión y el servidor:
AUTH miClaveSegura
PING
INFO server
CONFIG GET maxmemory
DBSIZE
CLIENT SETNAME mi_aplicacion
- Persistencia de Datos
Redis ofrece dos mecanismos principales de persistencia:
- RDB (Database Snapshot): Genera un volcado del conjunto de datos completo en un archivo (ej.
dump.rdb) a intervalos configurados o bajo ciertas condiciones. Es el método por defecto. - AOF (Append-Only File): Registra cada operación de escritura que modifica el conjunto de datos. Este archivo se puede reescribir para comprimirse. Se activa con
appendonly yesen la configuración.
Si ambos están activos, al reiniciar, Redis priorizará el archivo AOF para la recuperación de datos, ya que suele contener una versión más reciente de los mismos.
- Replicación Maestro-Esclavo
La replicación permite crear copias (réplicas o esclavos) de un servidor maestro. Los esclavos se sincronizan con el maestro y pueden servir para lecturas.
Para configurar un servidor como réplica, se modifica su archivo de configuración o se envía un comando en runtime:
# En el archivo de configuración del esclavo
replicaof 192.168.1.100 6379
masterauth miClaveSegura
O desde la línea de comandos del esclavo:
redis-cli> REPLICAOF 192.168.1.100 6379
En el maestro, se puede verificar el estado de la replicación:
redis-cli> INFO replication
- Alta Disponibilidad con Sentinel
Redis Sentinel es el sistema de alta disponibilidad oficial. Su propósito es vigilar la replicación y realizar un failover (conmutación) automática si el maestro falla, promoviendo a un esclavo a maestro.
Configuración básica de Sentinel (sentinel.conf):
sentinel monitor miproyecto-maestro 192.168.1.100 6379 2
sentinel down-after-milliseconds miproyecto-maestro 5000
sentinel failover-timeout miproyecto-maestro 60000
sentinel auth-pass miproyecto-maestro miClaveSegura
Las funciones clave de Sentinel son:
- Monitoreo: Comprueba continuamente que los nodos maestro y esclavos están operativos.
- Notificación: Puede avisar a administradores o sistemas externos sobre problemas.
- Failover Automático: Si el maestro no responde tras el umbral configurado, elige un esclavo como nuevo maestro y reconfigura a los demás esclavos para replicar del nuevo.
- Proveedor de Configuración: Los clientes pueden consultar a los Sentinels para descubrir la dirección del maestro actual.
Para iniciar el servicio de Sentinel:
sudo systemctl start redis-sentinel
Se puede verificar el estado conectando al puerto de Sentinel (26379 por defecto):
redis-cli -p 26379
127.0.0.1:26379> SENTINEL masters
127.0.0.1:26379> INFO sentinel