Artículos sobre: Bases de datos & almacenamiento

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.



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:

  1. El usuario inicia sesión.
  2. Los datos de la sesión se guardan en Redis con un ID único.
  3. Ese ID se envía al usuario vía Cookie.
  4. 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 incluido en la URL copiada).
  • 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 ioredis)

import { createClient } from "redis";
import fs from "fs";

const client = createClient({
url: "rediss://default:JTI6bNRaws1Z1jokWU8mRfoW@square-cloud-db-{id}.squareweb.app:{port}",
socket: {
tls: true,
ca: fs.readFileSync("ca-certificate.crt")
},
});

// Salvando no cache por 1 hora (3600 segundos)
await redis.set('usuario:123:perfil', JSON.stringify(perfil), 'EX', 3600);

// Recuperando do cache
const cache = await redis.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("ca-certificate.crt")
r = redis.from_url(
"rediss://default:JTI6bNRaws1Z1jokWU8mRfoW@square-cloud-db-{id}.squareweb.app:{port}",
decode_responses=True,
ssl_cert_reqs=ssl.CERT_REQUIRED,
ssl_ca_certs=str(ca_cert_path)
)

# Definindo uma sessão com expiração
r.setex("sessao:token_abc", 1800, "usuario_id_45")

# Buscando a sessão
user_id = r.get("sessao:token_abc")



5. Buenas prácticas


  • Nomenclatura de claves: Usa dos puntos (:) para organizar los nombres, como app: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: 13/06/2026

¿Este artículo te resultó útil?

Comparte tu opinión

Cancelar

¡Gracias!