我有一个数据库如下:
score:0
timeScore:86400
totalScore:0
time:1234567777 // Any time stamp
现在每次用户投票
increment($inc) score by +1
然后我将 timeScore 更新为 eg (86400 / nowTimestamp() - time + 1 )
然后我将 totalScore 更新为(timeScore + score)
例如:对于第二次更新后的最终值:
score:1
timeScore:86400
totalScore:86401
time:1234567777
问题是,在我的外部计算过程中,可能是另一个用户在分数上加了 +1 并计算了总数并在我更新数据之前写入了它的值,因此会出现数据损坏。
现在我该如何解决这个问题或如何使其线程安全?