Użyłem tylko Redis jako mojego DB, a moim klientem jest ServiceStack.Redis. Chodzi o to, że jeśli dwie równoczesne żądania wymagają aktualizacji jednego klucza, może to być sytuacja wyścigowa. Na przykładJak mogę zapobiec warunkom wyścigu, korzystając z usługi Redis?
A:
- int a = Get klucz
- MULTI
- a = a - 100
- Ustaw Klucz
- EXEC
B:
- int a = Get klucz
- MULTI
- a = a - 100
- Ustaw Klucz
- EXEC
jeśli "klucz" pochodzenia wynosi 1000. Jeśli wycisk A i B są ciągłe zmusza, właściwe wyniki tych dwóch operacji "klucza" będą 800. Ale jeśli A i B zdarzają się w tym samym czasie. Zanim A może zatwierdzić, operacja B otrzymuje wartość 1000 z "klucza" i ustawia 900 na "klucz". Nie tego chcę. Jak mogę zapobiec takim warunkom wyścigowym, używając "WATCH"?
Tak, użyj WATCH. –