Une transaction de base de données fait référence à une seule unité de travail composée de requêtes simples à plusieurs. Dans les cas, une opération ne peut être classée comme une transaction que s'il y a des modifications à la base de données.
Nous ne nous en préoccuperons pas, mais nous apprendrons à utiliser la commande de montre aux côtés des transactions redis pour celle-ci.
Que sont les transactions?
Dans Redis, les transactions sont composées de quatre commandes principales: Watch, Exec, Discard et Multi.
En utilisant les commandes ci-dessus, vous pouvez ouvrir un bloc et ajouter plusieurs commandes en même temps. Une fois terminé, vous exécutez les commandes en une seule unité.
Pour qu'une transaction réussisse, Redis garantit que:
Redis Create Transaction
Vous créez une unité de transaction à l'aide de la commande multiple. La commande multi-commandes reviendra ok. Vous pouvez aller de l'avant et ajouter toutes les commandes de transaction l'une après l'autre.
Au lieu d'exécuter les commandes, Redis les fera la queue dans l'insertion jusqu'à ce que vous les appelez.
Un exemple est comme indiqué ci-dessous:
127.0.0.1: 6379> Multi
D'accord
Redis Exécuter l'unité de transaction
Comme mentionné, Redis fera la file d'attente des commandes dans une unité de transaction jusqu'à ce que vous les exécutez manuellement.
Nous pouvons le faire en utilisant la commande exec. Cela dit à redis d'exécuter toutes les commandes en file d'attente dans l'ordre d'insertion.
Un exemple d'utilisation est comme indiqué ci-dessous:
127.0.0.1: 6379> Set Newkey "100"
En queue de file d'attente
127.0.0.1: 6379> Incr Newkey
En queue de file d'attente
127.0.0.1: 6379> Obtenez Newkey
En queue de file d'attente
127.0.0.1: 6379>
Vous remarquerez que chaque commande exécutée est en file d'attente. Une commande en file d'attente est une commande qui devrait s'exécuter après l'appel.
Pour l'exécuter, appelez Exec comme:
127.0.0.1: 6379> Exec
1) OK
2) (entier) 101
3) "101"
Cela devrait exécuter toutes les commandes et renvoie les valeurs résultantes.
Redis supprimer la file d'attente
Supposons que vous souhaitiez nettoyer votre file d'attente de commande et rincer toutes les commandes planifiées? Pour cela, vous pouvez utiliser la commande Discard comme indiqué:
127.0.0.1: 6379> Multi
D'accord
127.0.0.1: 6379> Set Newkey "100"
En queue de file d'attente
127.0.0.1: 6379> Incr Newkey
En queue de file d'attente
127.0.0.1: 6379> Obtenez Newkey
En queue de file d'attente
127.0.0.1: 6379> Jeter
D'accord
Après avoir exécuté la commande de défaillance, Redis reviendra OK et fermera l'unité de transaction.
Commande Redis Watch
La commande Watch dans Redis vous permet d'implémenter la fonction de vérification et de set. Les commandes de montre acceptent les clés redis comme paramètres et les surveiller.
Si l'une des touches spécifiées est modifiée avant l'appel de la commande EXEC, Redis termine automatiquement la transaction et renvoie une réponse nul.
Prenez l'exemple ci-dessous:
var = get myKey
var = var + 1
Définissez Mykey $ var
Dans l'exemple ci-dessus, nous avons une opération qui augmente la valeur d'une clé de 1. Bien sûr, ce n'est pas un problème si un seul client effectue ladite opération.
Cependant, si plusieurs clients tentent d'exécuter l'opération ci-dessus simultanément, une condition de course se produit et renvoie une valeur non valide.
Nous pouvons résoudre ce problème en regardant la clé comme indiqué:
Regardez Mykey
var = get myKey
var = var + 1
MULTI
Définissez Mykey $ var
Exécutif
Ici, si un client fonctionne et que la valeur de la clé est modifiée avant d'exécuter la transaction, l'exécution échoue.
Pour supprimer toutes les touches regardées, utilisez la commande UNDACT.
Conclusion
Cet article a discuté en utilisant et en travaillant avec les transactions dans une base de données Redis. Vérifiez la documentation pour en savoir plus.
Merci d'avoir lu!!