En utilisant Redis, je souhaite exécuter une séquence atomique de commandes, c'est-à-dire que je dois garantir qu'aucun autre client n'effectuera de modifications dans la base de données pendant l'exécution de la séquence.Transactions en Redis avec des opérations de lecture
Si j'utilisé écrire commandes seulement, je pouvais utiliser des instructions MULTI
et EXEC
pour assurer atomicité en utilisant les transactions. Cependant, je voudrais également utiliser lire commandes dans mes transactions. Par conséquent, je ne peux pas utiliser MULTI
, car les commandes de lecture sont également mises en file d'attente!
Fondamentalement, de manière atomique, je dois faire ce qui suit:
- Lire
x
de la base de données, - Basé sur
x
, magasinf(x)
à la base de données.
Les deux parties 1. et 2. doivent faire partie d'une seule transaction atomique.
Existe-t-il un moyen simple de faire cela?
Vous pouvez essayer d'utiliser les scripts Lua: http://redis.io/commands/eval –