# /home/redis/.env
REDIS_PASSWORD=senha-redis-forte
chmod 600 /home/redis/.env
cd /home/redis && docker compose up -d
2 redis-cli
redis-cli # conectar local
redis-cli -h 127.0.0.1 -p 6379
redis-cli -a "senha"
PING # → PONG
INFO server # versão, uptime
INFO memory # uso de memória
DBSIZE # quantidade de chaves
FLUSHDB # apaga DB atual (cuidado)
MONITOR # stream em tempo real de comandos
3 Strings
SET usuario:1:nome "Alfredo"
GET usuario:1:nome # → "Alfredo"
SET contador 0
INCR contador # → 1
INCRBY contador 5 # → 6
SET cache:produto:42 '{"id":42}' EX 3600 # expira em 1h
MSET chave1 "a" chave2 "b"
MGET chave1 chave2 # → ["a","b"]
EXISTS chave1 # → 1 / 0
DEL chave1 chave2
TYPE chave1 # → string / hash / list / set / zset
4 TTL — Expiração
SET sessao:abc123 "dados" EX 1800 # expira em 30 min
SET token:xyz "jwt" PX 60000 # expira em 60s (milissegundos)
TTL sessao:abc123 # → segundos restantes (-1 permanente, -2 não existe)
PTTL sessao:abc123 # → milissegundos
EXPIRE sessao:abc123 3600 # renova TTL
PERSIST sessao:abc123 # remove expiração
5 Hashes
HSET usuario:1 nome "Alfredo" email "a@a.com" role "admin"
HGET usuario:1 nome # → "Alfredo"
HGETALL usuario:1 # → {nome, email, role}
HMGET usuario:1 nome email # → ["Alfredo","a@a.com"]
HDEL usuario:1 ultimo_login
HEXISTS usuario:1 email # → 1
HINCRBY usuario:1 pontos 10 # incrementa campo numérico
6 Lists
RPUSH fila:emails "e1" "e2" "e3" # adiciona no final
LPUSH fila:emails "e0" # adiciona no início
LRANGE fila:emails 0 -1 # lista completa
LLEN fila:emails
LPOP fila:emails # remove e retorna do início
RPOP fila:emails # remove e retorna do final
BLPOP fila:emails 30 # blocking pop — espera até 30s
7 Sets e Sorted Sets
# Set — sem ordem, sem duplicatas
SADD tags:artigo:1 "node" "typescript" "redis"
SMEMBERS tags:artigo:1
SISMEMBER tags:artigo:1 "redis" # → 1
SUNION tags:artigo:1 tags:artigo:2
SINTER tags:artigo:1 tags:artigo:2
# Sorted Set — com score, ordenado
ZADD ranking 1500 "usuario:1" 2300 "usuario:2"
ZREVRANGE ranking 0 2 WITHSCORES # top 3
ZINCRBY ranking 100 "usuario:1"
ZREVRANK ranking "usuario:2" # posição (0-based, decrescente)
// pipeline — vários comandos em uma viagem
const pipeline = redis.pipeline();
pipeline.set('a', '1');
pipeline.set('b', '2');
pipeline.incr('contador');
const resultados = await pipeline.exec();
15 Monitoramento
redis-cli INFO all # estatísticas completas
redis-cli INFO memory | grep used_memory_human
redis-cli INFO clients # conexões ativas
redis-cli INFO stats | grep instantaneous_ops
redis-cli --latency -h 127.0.0.1 # latência em tempo real
redis-cli MONITOR # stream de todos os comandos
redis-cli --bigkeys # top chaves por tamanho
redis-cli MEMORY USAGE nome:da:chave # memória de uma chave