Redis: caching y gestión de sesiones
Redis: caching y gestión de sesiones
En aplicaciones de alto rendimiento, cada milisegundo cuenta. Redis actúa como una capa de almacenamiento ultrarrápida que vive entre tu usuario y tu base de datos persistente (como PostgreSQL o MySQL). En este artículo, exploraremos las dos funciones más vitales de Redis: Caching y Session Management.
1. ¿Qué es el caching y por qué usarlo?
El caché es el proceso de almacenar resultados de operaciones costosas (como una query compleja en la base de datos o el resultado de una API externa) en un lugar de acceso rápido.
Ventajas:
- Reducción de latencia: Redis responde en microsegundos.
- Ahorro de recursos: Evita que tu base de datos principal procese la misma información repetidamente.
- Escalabilidad: Permite que tu aplicación soporte más usuarios simultáneos con el mismo hardware.
Ejemplo práctico (TTL):
Una de las funciones más poderosas es el TTL (Time To Live), que define un tiempo de expiración para cada clave, garantizando que tu caché no quede "viejo" para siempre. Por ejemplo, puedes guardar un dato y decirle a Redis: bórralo en 600 segundos.
2. Gestión de sesiones
Cuando tienes una aplicación que escala (con múltiples contenedores o shards), no puedes guardar los datos de la sesión del usuario (como el carrito de compras o el login) en la memoria local del proceso, pues si el usuario cae en otro contenedor, lo perderá todo.
Redis resuelve esto sirviendo como una fuente centralizada de verdad:
- El usuario inicia sesión.
- Los datos de la sesión se guardan en Redis con un ID único.
- Ese ID se envía al usuario vía Cookie.
- En cualquier petición futura, cualquier instancia de tu aplicación puede consultar Redis usando ese ID para saber quién es el usuario.
3. Conectando en Square Cloud
Para conectar tu aplicación al Redis de Square Cloud, necesitarás los datos proporcionados en la pestaña de tu base de datos:
- Host:
square-cloud-db-{id}.squareweb.app({id}es el ID de tu instancia; ya viene en la URL de conexión copiada del panel). - Puerto: El puerto proporcionado en el dashboard.
- Contraseña: La contraseña generada en la creación de la instancia.
- Protocolo: Recuerda usar
rediss://(con dos 's') para conexiones seguras con TLS/SSL.
4. Implementación técnica
En Node.js (usando node-redis)
import { createClient } from "redis";
import fs from "fs";
const client = createClient({
url: "rediss://default:TU_CONTRASENA@square-cloud-db-{id}.squareweb.app:{port}",
socket: {
tls: true,
ca: fs.readFileSync("certificate.pem")
},
});
await client.connect();
// Guardando en caché por 1 hora (3600 segundos)
await client.set('usuario:123:perfil', JSON.stringify(perfil), { EX: 3600 });
// Recuperando de la caché
const cache = await client.get('usuario:123:perfil');
En Python (usando redis-py)
import redis
import os
import ssl
from pathlib import Path
ca_cert_path = Path(__file__).with_name("certificate.pem")
r = redis.from_url(
"rediss://default:TU_CONTRASENA@square-cloud-db-{id}.squareweb.app:{port}",
decode_responses=True,
ssl_cert_reqs=ssl.CERT_REQUIRED,
ssl_ca_certs=str(ca_cert_path)
)
# Definiendo una sesión con expiración
r.setex("sesion:token_abc", 1800, "usuario_id_45")
# Obteniendo la sesión
user_id = r.get("sesion:token_abc")
5. Buenas prácticas
- Nomenclatura de claves: Usa dos puntos (
:) para organizar los nombres, comoapp:v1:user:123. Esto facilita la visualización en herramientas de gestión. - Evita claves gigantes: Redis es rápido, pero leer una clave de 100MB aún llevará tiempo. Intenta mantener los objetos pequeños.
- Monitorea la memoria: Redis almacena todo en la RAM. Asegúrate de asignar memoria suficiente para almacenar los datos sin forzar el límite.
Actualizado el: 04/10/2026
¡Gracias!
