Jobs agendados
O mesmo cron roda em todas as instâncias, e o lock garante que exatamente uma delas faça o trabalho.
Garanta que só um worker execute um job por vez, com locks que expiram sozinhos e são liberados com segurança pelo dono.
NX só o pega se ninguém o tiver. PX 30000 faz com que ele expire em 30 segundos se A morrer.
Uma demonstração animada com comandos reais do HotKV e respostas de exemplo. Clique em qualquer etapa para ir direto a ela. Os comandos e as respostas ficam em inglês, exatamente como você os digita e vê no HotKV.
Cron jobs em várias máquinas, capturas de pagamento e reconstruções de cache não podem rodar duas vezes ao mesmo tempo. Um lock sem expiração fica preso para sempre quando o dono cai, e liberar um lock com um DEL simples pode apagar o lock de outra pessoa depois que o seu expirou.
SET com NX e PX adquire um lock só se ninguém o tiver, e dá a ele uma expiração para que um dono que caiu não o segure para sempre. Cada dono armazena um token aleatório como valor. DELEX com IFEQ apaga o lock só se ele ainda tiver o seu token, que é a liberação segura que antes exigia um script Lua.
NX só o pega se ninguém o tiver. PX 30000 faz com que ele expire em 30 segundos se A morrer.
SET lock:billing-run tok-a81f NX PX 30000O lock está ocupado, então B recebe nil e pula esta execução.
SET lock:billing-run tok-b22c NX PX 30000Só um worker executa o job de faturamento.
PTTL lock:billing-runDELEX apaga a chave só se o valor ainda for o token de A.
DELEX lock:billing-run IFEQ tok-a81fSe A tivesse demorado demais e B estivesse com o lock agora, a liberação de A deixaria o lock de B intacto.
DELEX lock:billing-run IFEQ tok-staleO mesmo cron roda em todas as instâncias, e o lock garante que exatamente uma delas faça o trabalho.
As operações de captura e de reembolso de um pedido são serializadas para nunca se sobreporem.
Só uma requisição reconstrói uma entrada de cache cara, enquanto as outras esperam ou servem o valor antigo.
SET NX PX pega o lock só se estiver livre, com um timeout.
SETNXPXDELEX IFEQ só apaga se o valor corresponder ao seu token.
DELEXVerifique o tempo restante e estenda-o em jobs longos.
PTTLPEXPIREPara valores grandes, DELEX IFDEQ compara um digest em vez do valor inteiro.
DIGESTIFDEQSe o seu lock expirou e outro worker o pegou, um DEL simples apagaria o lock dele. DELEX IFEQ só o apaga enquanto ele ainda tiver o seu token.
Maior do que o tempo que o job costuma levar. Em jobs longos, estenda a expiração periodicamente enquanto ainda estiver com o lock.
Não. DELEX faz a comparação e a exclusão em um comando.
O HotKV fala o protocolo Redis, então você pode apontar um cliente existente para ele e executar estes mesmos comandos.