Redis na VPS Ubuntu
Redis é a solução padrão para cache, filas de tarefas, pub/sub e sessões em memória — completamente diferente do PostgreSQL em propósito. Com latência de sub-milissegundo e estruturas de dados ricas (strings, hashes, lists, sets, sorted sets), Redis resolve problemas que bancos relacionais resolvem de forma ineficiente.
Instalar Redis pelo repositório oficial
Use o repositório oficial para ter sempre a versão mais recente:
# Adicionar repositório oficial do Redis
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt update
sudo apt install -y redis
# Verificar instalação
redis-server --version
sudo systemctl status redis
# Habilitar início automático
sudo systemctl enable redis
# Testar com redis-cli
redis-cli ping
# PONGConfigurar segurança e autenticação
Proteja o Redis com senha e restrição de bind:
# /etc/redis/redis.conf
# Bind apenas para localhost (ou IP interno)
bind 127.0.0.1 -::1
# Porta padrão
port 6379
# Autenticação com senha forte
requirepass senha_redis_muito_forte_aqui
# Renomear comandos perigosos (opcional mas recomendado):
rename-command FLUSHALL "" # desabilitar flush total
rename-command FLUSHDB "" # desabilitar flush do banco
rename-command DEBUG "" # desabilitar debug
rename-command CONFIG "CONFIG_SECRETO_XYZ" # renomear config
# Limite de memória
maxmemory 512mb
maxmemory-policy allkeys-lru # despejar chaves menos usadas
# Reiniciar
sudo systemctl restart redis
# Testar autenticação:
redis-cli -a "senha_redis_muito_forte_aqui" ping
# Ou:
redis-cli
AUTH senha_redis_muito_forte_aqui
PINGConfigurar persistência
Redis tem dois mecanismos de persistência com tradeoffs diferentes:
# /etc/redis/redis.conf — configurar persistência
# === RDB (Snapshot) — padrão ===
# Salva snapshot a cada N segundos se X chaves mudaram
save 3600 1 # 1 mudança em 1h
save 300 100 # 100 mudanças em 5min
save 60 10000 # 10000 mudanças em 1min
dbfilename dump.rdb
dir /var/lib/redis
# === AOF (Append Only File) — mais durável ===
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec # fsync a cada segundo (balanço boa durabilidade/perf)
# appendfsync always # fsync em cada escrita (máxima durabilidade, mais lento)
# appendfsync no # deixa o OS decidir (mais rápido, menos durável)
# Recomendação para cache puro (sem necessidade de persistência):
# save "" # desabilitar RDB
# appendonly no # desabilitar AOF
# (Redis mais rápido e sem overhead de IO)
# Verificar estado da persistência:
redis-cli -a SENHA INFO persistenceCasos de uso com exemplos de código
Os principais padrões de uso do Redis com Node.js e Python:
# Node.js com ioredis:
import Redis from 'ioredis'
const redis = new Redis({
host: '127.0.0.1', port: 6379,
password: process.env.REDIS_PASSWORD,
maxRetriesPerRequest: 3,
})
// Cache com TTL:
await redis.setex('usuario:123', 300, JSON.stringify(userData))
const cached = await redis.get('usuario:123')
// Contador de rate limiting:
const key = `rate:${ip}:${Math.floor(Date.now()/60000)}`
const count = await redis.incr(key)
await redis.expire(key, 60)
if (count > 100) throw new Error('Rate limit exceeded')
// Fila simples:
await redis.rpush('tarefas', JSON.stringify(task))
const task = await redis.blpop('tarefas', 0) // bloqueante
# Python com redis-py:
import redis
r = redis.Redis(host='localhost', port=6379,
password='senha', decode_responses=True)
# Cache:
r.setex('chave', 300, 'valor')
valor = r.get('chave')
# Pub/Sub:
p = r.pubsub()
p.subscribe('canal')
for msg in p.listen():
print(msg)Monitorar o Redis em produção
Comandos essenciais para acompanhar o estado do Redis:
# Visão geral completa do servidor:
redis-cli -a SENHA INFO all | grep -E "used_memory_human|connected_clients|total_commands|keyspace_hits|keyspace_misses|evicted_keys|rdb_last_save|aof_enabled"
# Monitorar comandos em tempo real (CUIDADO: muito verboso):
redis-cli -a SENHA MONITOR | head -100
# Latência:
redis-cli -a SENHA --latency-history -i 1
# Identificar chaves grandes:
redis-cli -a SENHA --bigkeys
# Verificar taxa de hit do cache:
redis-cli -a SENHA INFO stats | grep keyspace
# keyspace_hits: cache hits
# keyspace_misses: cache misses
# Hit ratio = hits / (hits + misses)
# Listar bancos e número de chaves:
redis-cli -a SENHA INFO keyspace
# Verificar uso de memória por tipo de dado:
redis-cli -a SENHA MEMORY DOCTOR$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o VPS em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.