Job pianificati
Lo stesso cron gira su ogni istanza, e il lock garantisce che esattamente una di esse faccia il lavoro.
Assicurati che un solo worker alla volta esegua un job, con lock che scadono da soli e vengono rilasciati in sicurezza dal loro proprietario.
NX lo prende solo se nessuno lo detiene. PX 30000 lo fa scadere in 30 secondi se A muore.
Una dimostrazione animata con comandi HotKV reali e risposte di esempio. Clicca su un passo qualsiasi per andarci. Comandi e risposte restano in inglese, esattamente come li digiti e li vedi in HotKV.
Cron job su più macchine, catture di pagamento e ricostruzioni della cache non devono girare due volte contemporaneamente. Un lock senza scadenza resta acquisito per sempre quando il suo proprietario si blocca, e rilasciare un lock con un semplice DEL può cancellare il lock di qualcun altro dopo che il tuo è scaduto.
SET con NX e PX acquisisce un lock solo se nessuno lo detiene, e gli dà una scadenza perché un proprietario bloccato non possa tenerlo per sempre. Ogni proprietario salva un token casuale come valore. DELEX con IFEQ cancella il lock solo se contiene ancora il tuo token, ed è il rilascio sicuro che prima richiedeva uno script Lua.
NX lo prende solo se nessuno lo detiene. PX 30000 lo fa scadere in 30 secondi se A muore.
SET lock:billing-run tok-a81f NX PX 30000Il lock è occupato, quindi B riceve nil e salta questa esecuzione.
SET lock:billing-run tok-b22c NX PX 30000Un solo worker esegue il job di fatturazione.
PTTL lock:billing-runDELEX cancella la chiave solo se il valore è ancora il token di A.
DELEX lock:billing-run IFEQ tok-a81fSe A fosse stato troppo lento e ora il lock fosse di B, il rilascio di A lascerebbe intatto il lock di B.
DELEX lock:billing-run IFEQ tok-staleLo stesso cron gira su ogni istanza, e il lock garantisce che esattamente una di esse faccia il lavoro.
Le operazioni di cattura e rimborso su un ordine vengono serializzate, così non si sovrappongono mai.
Una sola richiesta ricostruisce una voce di cache costosa mentre le altre aspettano o servono il valore obsoleto.
SET NX PX prende il lock solo se è libero, con un timeout.
SETNXPXDELEX IFEQ cancella solo se il valore corrisponde al tuo token.
DELEXControlla il tempo rimanente ed estendilo per i job lunghi.
PTTLPEXPIREPer i valori grandi, DELEX IFDEQ confronta un digest invece del valore completo.
DIGESTIFDEQSe il tuo lock è scaduto e un altro worker l'ha preso, un semplice DEL cancellerebbe il suo lock. DELEX IFEQ lo cancella solo finché contiene ancora il tuo token.
Più di quanto dura normalmente il job. Per i job lunghi, estendi periodicamente la scadenza finché detieni ancora il lock.
No. DELEX fa il confronto e la cancellazione in un solo comando.
HotKV parla il protocollo Redis, quindi puoi puntarci un client esistente ed eseguire questi stessi comandi.