O que redis-best-practices faz?
Melhores práticas de desenvolvimento Redis para caching, estruturas de dados e operações de chave-valor de alto desempenho
Visão Geral
Esta skill reúne recomendações consolidadas para projetar, implementar e manter sistemas usando Redis de forma eficiente e confiável.
Princípios Chave
- Caching – Use estratégias como cache-aside, defina TTLs adequados e evite cache stampede.
- Estruturas de Dados – Prefira hashes para objetos, sorted sets para rankings e lists para filas simples. Evite o uso excessivo de keys sem escopo.
- Alta Performance – Mantenha operações rápidas: evite comandos
KEYS, useSCAN, e prefira pipelines/MULTI para operações em lote.
Exemplos de Uso
# Exemplo de conexão via CLI
redis-cli -h localhost -p 6379
# Definir uma chave com TTL
SET user:1000:session "abc123" EX 300
import redis
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
# Cache-aside pattern
def get_user(user_id):
key = f"user:{user_id}:data"
data = r.get(key)
if data is None:
data = query_database(user_id)
r.setex(key, 3600, data)
return data
Boas Práticas
- Nomenclatura: Use namespaces como
objeto:id:campo(ex:user:1000:name). - Tamanho de chaves: Evite chaves muito longas (>1024 bytes).
- Serialização: Prefira JSON ou protocol buffers para valores.
- Monitoramento: Use
INFO,MONITOReSLOWLOGpara identificar gargalos.
Estruturas de Dados Recomendadas
| Tipo | Caso de Uso | Comando Exemplo |
|---|---|---|
| String | Cache de objetos, contadores | SET, GET, INCR |
| Hash | Objetos com múltiplos campos | HSET, HGET, HGETALL |
| List | Filas, histórico | LPUSH, RPOP, LRANGE |
| Set | Tags, relacionamentos | SADD, SMEMBERS, SUNION |
| Sorted Set | Rankings, intervalos ordenados | ZADD, ZRANGE, ZREVRANK |
| HyperLogLog | Contagem aproximada de distintos | PFADD, PFCOUNT |
| Bitmap | Flags booleanas, tracking | SETBIT, GETBIT, BITCOUNT |
| Geospatial | Coordenadas, proximidade | GEOADD, GEORADIUS, GEODIST |
Armadilhas Comuns
- Não use
KEYS *em produção – useSCAN 0. - Evite chaves muito grandes (>10 MB) – divida em hashes ou compressão.
- Cuidado com comandos bloqueantes:
BLPOP,BRPOPsem timeout adequado. - Monitoramento de memória: ative
maxmemorye política de eviction (ex:allkeys-lru).