L'atomicité de l'opération garantit que l'opération ne peut pas être à nouveau divisée, et qu'elle sera soit exécutée complètement, soit pas complètement exécutée.
Vous devez apprendre les principes atomiques des systèmes d'exploitation. Le temps est un peu long et ce n'est peut-être pas exact. Permettez-moi de donner un exemple courant qui n'a rien à voir avec Redis.
Il y a une variable A=10, je veux y ajouter 5. Ensuite mon opération "ajouter 5" se découpe en plusieurs étapes :
Lire A
Lire le résultat +5
Le résultat est réécrit dans A
Il y a une autre personne qui veut y ajouter 3. Il ne sait pas que je veux aussi faire fonctionner la variable A. Son opération "ajouter 3" doit être divisée en plusieurs étapes :
Lire A
Lire le résultat +3
Le résultat est réécrit dans A
Si nos opérations ("Ajouter 3" et "Ajouter 5") ne sont pas atomiques, les instructions entre elles seront disposées de manière aléatoire et les résultats sont imprévisibles. Peut-être qu'il a terminé la réécriture de +3 en premier. Il était déjà 13 heures, nous avons donc obtenu le bon résultat de +3 puis +5. Il est également possible qu'il n'ait pas répondu lors de l'opération +3. Il m'est arrivé d'en lire 10, donc lors de la réécriture, cela peut être 13 ou 15.
Si notre opération est atomique, nous pouvons nous assurer que je ne peux pas l'insérer lorsqu'il effectue l'étape d'ajout de 3. Je ne peux démarrer mon opération qu'une fois qu'il a terminé l'opération, garantissant ainsi la fiabilité des données.
L'atomicité de l'opération garantit que l'opération ne peut pas être à nouveau divisée, et qu'elle sera soit exécutée complètement, soit pas complètement exécutée.
Vous devez apprendre les principes atomiques des systèmes d'exploitation. Le temps est un peu long et ce n'est peut-être pas exact. Permettez-moi de donner un exemple courant qui n'a rien à voir avec Redis.
Il y a une variable A=10, je veux y ajouter 5. Ensuite mon opération "ajouter 5" se découpe en plusieurs étapes :
Il y a une autre personne qui veut y ajouter 3. Il ne sait pas que je veux aussi faire fonctionner la variable A. Son opération "ajouter 3" doit être divisée en plusieurs étapes :
Si nos opérations ("Ajouter 3" et "Ajouter 5") ne sont pas atomiques, les instructions entre elles seront disposées de manière aléatoire et les résultats sont imprévisibles. Peut-être qu'il a terminé la réécriture de +3 en premier. Il était déjà 13 heures, nous avons donc obtenu le bon résultat de +3 puis +5. Il est également possible qu'il n'ait pas répondu lors de l'opération +3. Il m'est arrivé d'en lire 10, donc lors de la réécriture, cela peut être 13 ou 15.
Si notre opération est atomique, nous pouvons nous assurer que je ne peux pas l'insérer lorsqu'il effectue l'étape d'ajout de 3. Je ne peux démarrer mon opération qu'une fois qu'il a terminé l'opération, garantissant ainsi la fiabilité des données.
Semblable à une transaction de base de données, un ensemble d'opérations réussit ou n'est pas exécuté du tout
Si vous voulez le faire, faites tout ; si vous ne voulez pas le faire, ne le faites pas du tout