.env.
Lição 0: do zero ao primeiro comando (15 min)
Chaves que expiram sozinhas (TTL)¶
Toda chave do Redis pode ter prazo de vida. Sessão que morre em 30 minutos, cache de uma hora, lock de 5 segundos: você cria com SET ... EX, consulta com TTL, renova com EXPIRE. Sem job de limpeza; o Redis apaga sozinho.
Faça agora¶
1. Veja a expiração com os próprios olhos; no Workbench do Redis Insight (ou no redis-cli):
SET quest:session:demo "kaelith" EX 15
GET quest:session:demo # "kaelith"
TTL quest:session:demo # alguns segundos, contando
Espere 15 segundos e repita GET e TTL: voltam nil e -2. Ninguém apagou a chave.
2. Para acompanhar os demais comandos, rode o lab e confira:
./quest run 100-04 jedis
./quest verify 100-04
O que aconteceu¶
try (RedisClient jedis = Clients.jedis()) {
jedis.set(session, "kaelith", SetParams.setParams().ex(1800)); // nasce com prazo
jedis.ttl(session); // 1800
jedis.ttl(semPrazo); // -1: existe e nunca expira
jedis.ttl(inexistente); // -2: não existe
jedis.expire(session, 3600); // renova o prazo
jedis.persist(session); // remove o prazo (vira -1)
jedis.rename(session, rotated); // valor E prazo migram para o novo nome
}
E no fim o lab percorre suas chaves quest:* com SCAN; página por página, limitando o trabalho de cada chamada. KEYS faz a mesma busca em uma execução só e bloqueia o banco inteiro: só em desenvolvimento.
E o Lettuce?
Mesmos comandos, assinaturas um pouco diferentes: redis.expire(...) devolve Boolean, redis.exists(...) devolve Long (quantas das chaves pedidas existem), e o scan usa ScanArgs/ScanCursor. Rode ./quest run 100-04 lettuce e compare.
Ver no Redis Insight
Filtre por quest:session:*: a coluna TTL mostra o prazo caindo segundo a segundo, e dá para editar o TTL clicando na chave (é um EXPIRE por trás). Compare com quest:player:kaelith, que aparece como "No limit"; é o -1 do console.
Para ir além
- Convenção de nomes:
app:entidade:id(quest:session:7f3a9c). O Insight agrupa por esses segmentos eSCAN MATCH quest:session:*acha só sessões. - Use o prefixo mostrado pelo
doctornos comandos manuais desta página. - Regra de produção: chave de sessão, cache ou lock nasce com prazo. Chave sem TTL só some se alguém apagar.
- Detalhes de
EXPIRE ... NX/GT/LT,RENAME,UNLINKe eviction: lição completa 100-04.