devterview_$ iniciar simulação

Redis é single-thread — por que isso é uma vantagem (e o cuidado)

MédioPlenoModelo de execução

Pergunta

O processamento de comandos do Redis é single-thread. Por que isso não o torna lento, e qual comando pode travar o servidor inteiro?

Resposta esperada

O Redis executa comandos um de cada vez, numa thread — o que ELIMINA locks e condições de corrida entre comandos (cada comando é atômico por construção) e o torna previsível. Ele é rápido mesmo assim porque tudo é em memória e a maioria dos comandos é O(1)/O(log n), e o gargalo real costuma ser rede/CPU de serialização, não concorrência (I/O de rede é multiplexado com epoll; versões recentes têm I/O threads só pra ler/escrever socket, não pra executar). O cuidado: um comando O(N) sobre uma estrutura grande — `KEYS *` numa base com milhões de chaves, `SMEMBERS` de um set gigante, `FLUSHALL` síncrono, `LRANGE 0 -1` de uma lista enorme, um script Lua pesado — BLOQUEIA a thread, e TODOS os outros clientes esperam. Use `SCAN` (iterativo) em vez de `KEYS`, `SSCAN`/`HSCAN`, e evite operações grandes de uma vez.

Por que perguntam isso

Pergunta pleno de Redis. O `KEYS *` em produção é o erro clássico. Sinal bom: 'cada comando é atômico por construção' e `SCAN` como alternativa.

#single-thread#atomicidade#keys#scan
publicidade

Perguntas de acompanhamento

Relacionadas