次のようなデータベースがあります。
score:0
timeScore:86400
totalScore:0
time:1234567777 // Any time stamp
ユーザーが投票するたびに
increment($inc) score by +1
次に、timeScore を次のように更新します。 (86400 / nowTimestamp() - time + 1 )
次に、totalScore を次のように更新します。(timeScore + score)
例: 2 回目の更新後の最終値:
score:1
timeScore:86400
totalScore:86401
time:1234567777
問題は、私の外部計算中に、別のユーザーがスコアに+1を追加して合計を計算し、データを更新する前にその値を書き込んでデータが破損する可能性があることです。
これを解決するにはどうすればよいですか、またはスレッドセーフにするにはどうすればよいですか?