Pular para o conteúdo
~/.primo-academy.sh
☰ Aulas · NoSQL: Bancos Não-Relacionais · 0/10
Recomendado: essencial

Redis: O Banco Chave-Valor

1 min de leitura

fonte

Redis (REmote DIctionary Server) é um banco que mora inteiro na memória RAM, expondo uma interface de chave-valor com tipos ricos. Foi pensado pra ser muito rápido (latência de microssegundos) e hoje é peça padrão em quase toda stack backend - normalmente ao lado do banco principal, como cache ou message broker.

Subir Redis com Docker

docker run -d \
  --name redis \
  -p 6379:6379 \
  redis:7-alpine

A imagem redis:7-alpine é a recomendada pra dev/start. Em produção, você usa Redis com persistência (--appendonly yes) ou um managed service (Upstash, ElastiCache, etc.).

Conectando com redis-cli

# instala (ou usa via Docker)
docker exec -it redis redis-cli

# prompt do redis-cli
127.0.0.1:6379>

Os comandos mais básicos:

SET saudacao "Olá, mundo"      # cria/atualiza
GET saudacao                    # lê
DEL saudacao                    # remove
EXISTS saudacao                 # checa se existe

Tipos de dados ricos

Redis não é só string - tem 5 tipos úteis:

# String - o básico
SET contador 0
INCR contador                   # 1
INCRBY contador 10              # 11

# Hash - objeto com campos
HSET usuario:42 nome "Ana" email "ana@ex.com"
HGET usuario:42 nome            # "Ana"
HGETALL usuario:42              # todos os campos

# List - lista ordenada (insertion order)
LPUSH tarefas "comprar pão"     # prepend
RPUSH tarefas "estudar Redis"   # append
LRANGE tarefas 0 -1             # todas

# Set - conjunto sem ordem, sem duplicata
SADD tags "node" "backend" "api"
SMEMBERS tags                   # ["node", "backend", "api"]

# Sorted set - conjunto com score (pra leaderboard)
ZADD ranking 100 "ana" 95 "bruno" 80 "carla"
ZREVRANGE ranking 0 2 WITHSCORES    # top 3

Cliente Node: ioredis

A maioria dos projetos Node usa o pacote ioredis - tem tipagem TS forte, reconexão automática, e suporte a cluster.

npm install ioredis
import Redis from "ioredis";

const redis = new Redis("redis://localhost:6379");

await redis.set("saudacao", "Olá");
const valor = await redis.get("saudacao");
await redis.del("saudacao");

Tempo de vida: chaves que se auto-destroem

Quase toda chave no Redis tem expiração. Isso é o que faz cache funcionar sem encher a memória:

SET sessao:abc123 "{ ... }" EX 3600   # expira em 1 hora
TTL sessao:abc123                       # quanto falta (segundos)
EXPIRE sessao:abc123 1800               # muda a expiração

No Node:

await redis.set("sessao:abc123", "...", "EX", 3600);
const ttl = await redis.ttl("sessao:abc123");

Três conceitos pra fixar:

  • Redis é in-memory - tudo cabe na RAM, latência de microssegundos, mas tem limite de tamanho.
  • 5 tipos de dados (string, hash, list, set, sorted set) - cada um com casos de uso próprios.
  • EX na escrita define expiração automática - toda chave de cache/sessão devia ter.

Dica: use o EX ou PX direto no SET em vez de EXPIRE depois. É atômico - a chave nunca existe sem expiração.

No próximo nó, vamos ver os casos de uso reais do Redis em backend: cache, sessão, rate limit, contador e pub/sub.

// recursos

// avaliação da trilha

—
ainda sem avaliações