Maison >base de données >Redis >A quoi servent les transactions Redis ?
Transaction Redis
MULTI, EXEC, DISCARD et WATCH sont la base de la transaction Redis. Utilisés pour démarrer et contrôler explicitement une transaction, ils permettent d'exécuter un ensemble de commandes en une seule étape. Et offre deux garanties importantes :
● Toutes les commandes de la transaction seront sérialisées et exécutées dans l'ordre. Lors de l'exécution d'une transaction Redis, aucune demande émise par un autre client ne se produira. Cela garantit que la file d’attente de commandes est exécutée comme une seule opération atomique.
● Toutes les commandes de la file d'attente sont soit traitées, soit ignorées. La commande EXEC déclenche l'exécution de toutes les commandes de la transaction. Ainsi, lorsque le client perd la connexion avec le serveur dans le contexte de la transaction,
● Si cela se produit avant l'appel de la commande MULTI, aucune commande n'est exécutée
● Si la commande EXEC est appelée auparavant, toutes les commandes seront exécutées. Dans le même temps, redis utilise AOF (append-only file) pour écrire les transactions sur le disque à l'aide d'une opération d'écriture supplémentaire. En cas de temps d'arrêt ou de panne de processus, vous pouvez utiliser l'outil redis-check-aof pour réparer le fichier en ajout uniquement afin que le service puisse démarrer normalement et reprendre certaines opérations. (Recommandé : "Tutoriel vidéo Redis")
Utilisation
Utilisez la commande MULTI pour démarrer explicitement la transaction Redis. Cette commande répond toujours par OK. À ce stade, l'utilisateur peut émettre plusieurs commandes, et Redis n'exécutera pas ces commandes, mais les mettra en file d'attente. Une fois EXEC appelé, toutes les commandes seront exécutées. L’appel de DISCARD peut effacer la file d’attente des commandes dans la transaction et quitter la transaction. L'exemple suivant incrémente atomiquement les clés foo et bar.>MULTI OK >INCR foo QUEUED >INCR bar QUEUED >EXEC 1)(整数)1 2)(整数)1Comme le montre l'exécution de la commande ci-dessus, EXEC renvoie un tableau, où chaque élément est le résultat de retour d'une seule commande dans la transaction, et l'ordre est le même que l'ordre dans lequel la commande a été émis. Lorsqu'une connexion Redis est dans le contexte d'une requête MULTI, toutes les commandes recevront une réponse avec la chaîne QUEUED (envoyée comme réponse d'état du point de vue du protocole Redis) et mises en file d'attente dans la file d'attente des commandes. Ce n'est que lorsque EXEC est appelé que les commandes en file d'attente seront exécutées et le résultat réel sera renvoyé à ce moment-là.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!