PureTools

Tipos de Dados Redis: Quando Usar Cada Um

PureTools Team· 8 min de leitura
Tipos de Dados Redis: Quando Usar Cada Um

Redis: Mais Que um Cache

Redis é um store de estruturas de dados em memória. A maioria usa como cache, mas seus tipos de dados permitem armazenamento de sessões, leaderboards em tempo real, rate limiting, pub/sub e filas de jobs — tudo com latência sub-milissegundo.

Visão Geral dos Tipos

TipoCaso de UsoExemplo
StringCache, contadores, sessõesCache de página, contador de rate limit
HashArmazenamento de objetosPerfil de usuário, detalhes de produto
ListFilas, feeds de atividadeFila de jobs, mensagens recentes
SetColeções únicas, tagsUsuários online, visitantes únicos
Sorted SetRankings, time-seriesLeaderboard, fila de prioridade

Strings

SET user:session:abc123 "{\"userId\": 42}"
GET user:session:abc123
SET cache:page:/home "html" EX 3600  # expira em 1 hora
INCR api:rate:user:42  # contador atômico
SET lock:order:123 "worker-1" NX EX 30  # lock distribuído

Hashes (Objetos)

HSET user:42 name "Alice" email "alice@example.com" role "admin"
HGET user:42 name
HGETALL user:42
HINCRBY user:42 login_count 1

Lists (Filas)

LPUSH queue:emails "{\"to\": \"user@example.com\"}"
BRPOP queue:emails 30  # pop bloqueante
LPUSH activity:user:42 "Logou"
LTRIM activity:user:42 0 99  # mantém últimos 100

Sets (Coleções Únicas)

SADD online:users "user:42" "user:17"
SISMEMBER online:users "user:42"  # true
SINTER tag:javascript tag:react   # interseção

Sorted Sets (Rankings)

ZADD leaderboard 1500 "player:alice"
ZADD leaderboard 2200 "player:bob"
ZREVRANGE leaderboard 0 9 WITHSCORES  # top 10
ZINCRBY leaderboard 100 "player:alice"

Padrão Comum: Cache com Fallback

import Redis from 'ioredis';
const redis = new Redis(process.env.REDIS_URL);

async function getCached(key, fetchFn, ttl = 3600) {
  const cached = await redis.get(key);
  if (cached) return JSON.parse(cached);
  const data = await fetchFn();
  await redis.set(key, JSON.stringify(data), 'EX', ttl);
  return data;
}

Formate seus dados: Formatador JSON — formate valores JSON do Redis.