Maison > base de données > Redis > Partage de cas d'utilisation des transactions Redis

Partage de cas d'utilisation des transactions Redis

王林
Libérer: 2021-01-30 09:25:24
avant
1961 Les gens l'ont consulté

Partage de cas d'utilisation des transactions Redis

Tout d'abord, présentons brièvement l'essence de la transaction Redis :

 L'essence de la transaction Redis est un ensemble de commandes. Les transactions prennent en charge l'exécution de plusieurs commandes à la fois, et toutes les commandes d'une transaction seront sérialisées. Pendant le processus d'exécution de la transaction, les commandes dans la file d'attente seront exécutées en série dans l'ordre et les demandes de commandes soumises par d'autres clients ne seront pas insérées dans la séquence de commandes d'exécution de la transaction.

Pour résumer : une transaction Redis est une exécution unique, séquentielle et exclusive d'une série de commandes dans une file d'attente.

Les transactions Redis n'ont aucune notion de niveau d'isolement :

Les opérations par lots sont placées dans le cache de file d'attente avant d'envoyer la commande EXEC et ne seront pas réellement exécutées, il n'y a donc aucune requête dans la transaction pour voir. Les mises à jour dans la transaction ne peuvent pas être vues par les requêtes en dehors de la transaction.

Redis ne garantit pas l'atomicité :

Dans Redis, une seule commande est exécutée de manière atomique, mais les transactions ne garantissent pas l'atomicité et il n'y a pas de restauration. Si une commande de la transaction ne parvient pas à s'exécuter, les commandes restantes seront quand même exécutées.

Trois étapes de la transaction Redis :

Commande de démarrage de la transaction pour mettre en file d'attente et exécuter la transaction

Commandes liées à la transaction Redis :

Regarder key1 key2 ... : Surveiller une ou plusieurs clés. Si la clé surveillée est modifiée par d'autres commandes avant l'exécution de la transaction, la transaction sera interrompue (similaire au verrouillage optimiste)

Multi : Marquer le début d'un bloc de transaction (en file d'attente)

 exec : Exécuter les commandes de tous les blocs de transaction (une fois exec exécuté, les verrous de surveillance précédemment ajoutés seront annulés)

discard : Annuler la transaction et abandonner toutes les commandes du bloc de transaction

 unwatch : Annuler la surveillance de toutes les clés par la surveillance

Cas d'utilisation de la transaction Redis :

(1) Exécution normale

Partage de cas dutilisation des transactions Redis

( 2) Abandonner la transaction

Partage de cas dutilisation des transactions Redis

(Partage vidéo d'apprentissage : tutoriel vidéo redis)

(3) S'il y a une commande dans la file d'attente des transactions erreur sexuelle (similaire à l'erreur de compilation java), lors de l'exécution de la commande EXEC, toutes les commandes ne seront pas exécutées

Partage de cas dutilisation des transactions Redis

(4) S'il y a une erreur de syntaxe dans la file d'attente des transactions (similaire à l'exception d'exécution 1/0 de Java), lorsque la commande EXEC est exécutée, d'autres commandes correctes seront exécutées et la mauvaise commande lèvera une exception.

Partage de cas dutilisation des transactions Redis

(5) Utiliser la montre

Cas 1 : Utilisez la montre pour détecter le solde, les données du solde ne changent pas pendant la transaction et la transaction est exécutée avec succès

Partage de cas dutilisation des transactions Redis

Cas 2 : Utilisez la montre pour détecter le solde. Après avoir ouvert la transaction (marquée 1), effectuez l'opération marquée 2 dans une nouvelle fenêtre, modifiez la valeur du solde, et simulez d'autres clients pendant l'exécution de la transaction Modifiez les données surveillées par la montre, puis exécutez la commande marquée 1. Après l'exécution d'EXEC, la transaction n'a pas été exécutée avec succès.

Partage de cas dutilisation des transactions Redis

Une fois EXEC exécuté pour démarrer l'exécution d'une transaction, la surveillance des variables par WARCH sera annulée, que la transaction soit exécutée avec succès ou non.

Par conséquent, lorsque l'exécution de la transaction échoue, vous devez réexécuter la commande WATCH pour surveiller les variables et démarrer une nouvelle transaction pour l'opération.

Résumé :

L'instruction de surveillance est similaire au verrouillage optimiste. Lorsque la transaction est validée, si la valeur d'une CLÉ parmi les multiples CLÉS surveillées par la montre a été modifiée par d'autres clients, utilisez EXEC pour exécuter la transaction, la file d'attente des transactions ne sera pas exécutée et une réponse Nullmulti-bulk est renvoyée pour informer l'appelant que l'exécution de la transaction a échoué.

Recommandations associées : Tutoriel sur la base de données Redis

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!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal