Artigos sobre: Bancos de Dados & Storage

Redis: Caching e gerenciamento de sessões

Redis: Caching e gerenciamento de sessões


Em aplicações de alta performance, cada milissegundo conta. O Redis atua como uma camada de armazenamento ultrarrápida que vive entre o seu usuário e o seu banco de dados persistente (como PostgreSQL ou MySQL). Neste artigo, exploraremos as duas funções mais vitais do Redis: Caching e Session Management.



1. O que é Caching e por que usar?


O Cache é o processo de armazenar resultados de operações custosas (como uma query complexa no banco de dados ou o resultado de uma API externa) em um local de acesso rápido.




Vantagens:

  • Redução de Latência: O Redis responde em microssegundos.
  • Economia de Recursos: Evita que o seu banco de dados principal processe a mesma informação repetidamente.
  • Escalabilidade: Permite que sua aplicação suporte mais usuários simultâneos com o mesmo hardware.


Exemplo Prático (TTL):

Uma das funções mais poderosas é o TTL (Time To Live). Você pode salvar um dado e dizer ao Redis: "Apague isso em 600 segundos". Isso garante que o seu cache não fique "velho" para sempre.



2. Gerenciamento de Sessões


Quando você tem uma aplicação que escala (com múltiplos containers ou shards), você não pode salvar os dados da sessão do usuário (como o carrinho de compras ou o login) na memória local do processo, pois se o usuário cair em outro container, ele perderá tudo.


O Redis resolve isso servindo como uma fonte centralizada de verdade:

  1. O usuário faz login.
  2. Os dados da sessão são salvos no Redis com um ID único.
  3. Esse ID é enviado ao usuário via Cookie.
  4. Em qualquer requisição futura, qualquer instância da sua aplicação pode consultar o Redis usando esse ID para saber quem é o usuário.



3. Conectando na Square Cloud


Para conectar sua aplicação ao Redis da Square Cloud, você precisará dos dados fornecidos na aba do seu banco de dados:


  • Host: square-cloud-db-id.squareweb.app (id é o ID da sua instância, já incluso URL copiada).
  • Porta: A porta disponibilizada no dashboard.
  • Senha: A senha gerada na criação da instância.
  • Protocolo: Lembre-se de usar rediss:// (com dois 's') para conexões seguras com TLS/SSL.




4. Implementação Técnica


Em 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');


Em 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. Boas Práticas


  • Nomenclatura de Chaves: Use colons (:) para organizar nomes, como app:v1:user:123. Isso facilita a visualização em ferramentas de gerenciamento.
  • Evite Chaves Gigantes: O Redis é rápido, mas ler uma chave de 100MB ainda levará tempo. Tente manter os objetos pequenos.
  • Monitore a Memória: O Redis armazena tudo na RAM. Certifique-se de alocar memória suficiente para armazenar os dados sem forçar o limite.

Atualizado em: 18/05/2026

Este artigo foi útil?

Compartilhe seu feedback

Cancelar

Obrigado!