Commande Redis Watch

Commande Redis Watch
Si vous êtes sérieux au sujet de Redis, vous voudrez utiliser des transactions pour gérer vos données. Les transactions redis ne sont pas très différentes des transactions dans une base de données relationnelle.

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:

  1. Toutes les commandes spécifiées dans une unité de transaction sont exécutées consécutivement. Par conséquent, le premier arrivé, première course.
  2. Toutes les commandes d'une unité de transaction doivent exécuter avec succès. Si l'une des commandes de l'unité échoue, l'ensemble du bloc de transaction échoue également. Cette fonctionnalité est connue sous le nom d'exécution de la commande atomique
  3. Troisièmement, les commandes d'une transaction sont sérialisées. Par conséquent, un client ne peut pas être un serveur pendant qu'une unité de transaction s'exécute.

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!!