devterview_$ iniciar simulação

`MULTI/EXEC` x script Lua pra atomicidade

DifícilSêniorAtomicidade

Pergunta

Você precisa de 'ler um valor, decidir, e escrever' de forma atômica no Redis. Qual a diferença entre usar `MULTI/EXEC` e um script Lua?

Resposta esperada

`MULTI/EXEC` (transação) ENFILEIRA comandos e os executa juntos, sem intercalar outro cliente — mas os comandos são fixados NA HORA do `MULTI`; você não pode usar o resultado de um comando pra decidir o próximo dentro da transação. Pra 'read-modify-write' condicional com `MULTI`, você usa `WATCH` numa chave + optimistic locking: se a chave mudou entre o `WATCH` e o `EXEC`, o `EXEC` falha e você faz retry. Script Lua (`EVAL`): roda no servidor, atomicamente (a thread única não intercala nada durante o script), e você TEM lógica — lê, faz `if`, escreve, tudo numa passada, sem retry. É a forma idiomática pra rate limiting exato, locks distribuídos (checar-e-setar), operações compostas condicionais. Cuidado: script Lua longo bloqueia a thread (ver a pergunta anterior); mantenha curto e determinístico.

Por que perguntam isso

Pergunta pleno/sênior de Redis. Sinal de domínio: 'MULTI não deixa usar resultado de um comando no próximo', `WATCH` optimistic locking, Lua pra lógica atômica.

#multi-exec#lua#watch#atomicidade
publicidade

Relacionadas