Tâches planifiées
Le même cron s'exécute sur chaque instance, et le verrou garantit qu'une seule d'entre elles fait le travail.
Assurez-vous qu'un seul worker exécute une tâche à la fois, avec des verrous qui expirent d'eux-mêmes et que leur propriétaire libère en toute sécurité.
NX ne le prend que si personne ne le détient. PX 30000 le fait expirer au bout de 30 secondes si A tombe.
Une démonstration animée avec de vraies commandes HotKV et des exemples de réponses. Cliquez sur une étape pour y accéder directement. Les commandes et les réponses restent en anglais, exactement comme vous les saisissez et les voyez dans HotKV.
Les tâches cron sur plusieurs machines, les captures de paiement et les reconstructions de cache ne doivent pas s'exécuter deux fois en même temps. Un verrou sans expiration reste détenu pour toujours quand son propriétaire plante, et libérer un verrou avec un simple DEL peut supprimer le verrou de quelqu'un d'autre une fois le vôtre expiré.
SET avec NX et PX n'acquiert un verrou que si personne ne le détient, et lui donne une expiration pour qu'un propriétaire planté ne puisse pas le garder indéfiniment. Chaque propriétaire stocke un jeton aléatoire comme valeur. DELEX avec IFEQ ne supprime le verrou que s'il contient encore votre jeton. C'est la libération sûre qui nécessitait autrefois un script Lua.
NX ne le prend que si personne ne le détient. PX 30000 le fait expirer au bout de 30 secondes si A tombe.
SET lock:billing-run tok-a81f NX PX 30000Le verrou est détenu, B reçoit donc nil et saute cette exécution.
SET lock:billing-run tok-b22c NX PX 30000Un seul worker exécute la tâche de facturation.
PTTL lock:billing-runDELEX ne supprime la clé que si la valeur est toujours le jeton de A.
DELEX lock:billing-run IFEQ tok-a81fSi A avait été trop lent et que B détenait maintenant le verrou, la libération de A laisserait le verrou de B intact.
DELEX lock:billing-run IFEQ tok-staleLe même cron s'exécute sur chaque instance, et le verrou garantit qu'une seule d'entre elles fait le travail.
Les opérations de capture et de remboursement d'une même commande sont sérialisées pour ne jamais se chevaucher.
Une seule requête reconstruit une entrée de cache coûteuse pendant que les autres attendent ou servent la valeur périmée.
SET NX PX ne prend le verrou que s'il est libre, avec un délai d'expiration.
SETNXPXDELEX IFEQ ne supprime que si la valeur correspond à votre jeton.
DELEXVérifiez le temps restant et prolongez-le pour les longues tâches.
PTTLPEXPIREPour les grosses valeurs, DELEX IFDEQ compare une empreinte au lieu de la valeur complète.
DIGESTIFDEQSi votre verrou a expiré et qu'un autre worker l'a pris, un simple DEL supprimerait son verrou. DELEX IFEQ ne le supprime que tant qu'il contient votre jeton.
Plus longue que la durée normale de la tâche. Pour les longues tâches, prolongez l'expiration régulièrement tant que vous détenez le verrou.
Non. DELEX effectue la comparaison et la suppression en une seule commande.
HotKV parle le protocole Redis. Vous pouvez donc y connecter un client existant et exécuter ces mêmes commandes.