вот поэтому я и хотел разделить приход и уход реальных денег(ваши ордеры) в одну таблицу, игровую валюту (трансакции) в другую. без зависимости между ними. тогда баланс юзера это: (real_money_in - real_money_out)+(game_money_to- game_money_from)
Трансакция:
1. SELECT money as moneyA FROM user A
2. SELECT money as moneyB FROM user B
3. moneyA--;
4. moneyB++;
5. UPDATE user A SET money=moneyA
6. UPDATE user B SET money=moneyB
вроде бы всё нормально, но представьте себе, что 2 такие трансакции(а и б) идут параллельно:
1а=>1б=>2а=>3а=>4а=>5а=>6а=>2б=>3б=>4б=>5б=>6б
Почему в таком порядке? а карты так легли, этому ничто не мешает. а в итоге получаем, что у А деньги списали 1 раз, а В записали 2 раза
у меня проблема не с ПС, а с действиями юзера на сайте. Пример: открываем 2 окна браузера, жмём "одновременно" "отправить другому пользователю 10 монет". как избежать проблем в этом случае?
извените, а вы вопрос читали? про то, что RPUSH уничтожает предыдущее значение, если поставить EXPIRE? но если почитать уточнения к вопросу, то будет видно, что проблема была в старой версии