Ho usato solo Redis come mio DB e il mio client è ServiceStack.Redis. Il fatto è che se due richieste simultanee devono aggiornare una chiave, allora può essere una condizione di competizione. Per esempioCome posso prevenire le condizioni di gara usando Redis?
A:
- int a = Get chiave
- MULTI
- a = a - 100
- Impostare la chiave di un
- EXEC
B:
- int a = Get chiave
- MULTI
- a = a - 100
- Impostare la chiave di un
- EXEC
se il la "chiave" di origine è 1000. Se la sperazione A e B sono di serie I risultati giusti di queste due operazioni di "chiave" saranno 800. Ma se A e B si verificano nello stesso tempo. Prima che A possa eseguire il commit, l'operazione B ottiene il valore 1000 da "chiave" e imposta 900 su "chiave". Non è quello che voglio. Come posso evitare questo tipo di condizioni di gara, utilizzare "GUARDA"?
Sì, utilizzare WATCH. –