Redis
O que é
Pense em manter as anotações de que você precisa agora em cima da mesa, em vez de andar até o arquivo para buscar cada uma delas — muito mais rápido, mas a mesa esvazia se a energia acabar. O Redis funciona como essa mesa: ele mantém os dados na memória de trabalho rápida (RAM, ou Random Access Memory, memória de acesso aleatório) em vez de no disco, então leituras e escritas são extremamente rápidas. Ele também pode, opcionalmente, salvar no disco. Funciona como um armazenamento de chave-valor, mas suporta estruturas de dados ricas, como listas, conjuntos (sets), conjuntos ordenados (sorted sets), hashes e streams. É usado com mais frequência como , armazenamento de sessão, fila ou limitador de taxa (rate limiter), ao lado de um banco de dados primário.
Pontos fortes
- Latência abaixo de um milissegundo graças à operação em memória.
- Estruturas versáteis: strings, hashes, listas, sets, sorted sets, streams.
- TTL (Time To Live, tempo de vida) embutido/expiração — cada entrada pode se autodeletar após um tempo definido — o que o torna ideal para cache e sessões.
- Operações atômicas e scripts em Lua para contadores e travas (locks) seguros.
- Pub/sub e streams dão suporte a mensageria e pipelines de eventos.
Contrapartidas
- Os dados são limitados pela memória disponível; conjuntos de dados grandes ficam caros.
- A persistência é opcional e pode perder escritas recentes em caso de falha.
- Não substitui um armazenamento relacional durável.
- O clustering adiciona complexidade operacional para sharding e failover.
Quando usar
Use o Redis para armazenar em cache resultados de consultas caras, guardar sessões, implementar limitação de taxa, gerenciar filas de trabalho, construir rankings (leaderboards) ou transmitir mensagens em tempo real. Combine-o com um banco de dados durável que mantenha a fonte da verdade.
Encaixe no vibe coding
Ao direcionar a IA, seja explícito de que o Redis é um cache ou armazenamento auxiliar, não o sistema de registro. Por isso, ela deve sempre definir um TTL nas entradas em cache. Ela também deve projetar um esquema claro de nomenclatura de chaves (por exemplo, user:123:profile). Peça à IA que use comandos atômicos como INCR para contadores e SET ... NX EX para travas, em vez de sequências de leitura-modificação-escrita que podem gerar condições de corrida (race conditions). Uma boa dica: peça à IA que use o padrão cache-aside. Isso significa apenas: primeiro procurar no cache; se não estiver lá, buscar no banco de dados; depois salvar no cache para a próxima vez. Peça também à IA que explique sua estratégia de invalidação — como os dados antigos e desatualizados são removidos — para que dados obsoletos não permaneçam por aí.
# Cache a value with a 1-hour expiry
SET user:123:profile "{\"name\":\"Ada\"}" EX 3600
# Atomic rate-limit counter
INCR rate:ip:203.0.113.5
EXPIRE rate:ip:203.0.113.5 60
# Distributed lock: set only if not exists, auto-expire
SET lock:job:42 "owner-a" NX EX 30
# Leaderboard with a sorted set
ZADD leaderboard 4200 "player:7"
ZREVRANGE leaderboard 0 9 WITHSCORES