关于游戏频繁数据更新问题
游戏里玩家数据(资产等级等等),这些数据在玩家游戏的过程中随时在变(改变的频率很高),对应这种数据一般怎么处理? 1.实时写到数据库?这种方式肯定对数据库压力很大。 2.只更新内存,通过定时任务写到数据库?
该怎么做呢?
12 回复
@jiangliqin @captainblue2013 谢谢。 那如果用redis ,我在定时写数据的时候如何判断哪些字段需要更新?或者是全部更新。这块应该如何设计呢?
@imhered 不明白判断更新哪些字段指的什么意思?如果随着一个完整的业务流量结束后,就可以定时批量写入数据库,在业务处理的各个环节中,需要更新哪些字段,直接在redis取出-更新操作。
@jiangliqin 例如一张表包含gold和diamond两个字段,玩家在游戏的过程中,gold和diamond都可能发生变化,也可能不发生变化,最优的做法肯定是我在定时往数据库里写的时候只写变化了的字段。实际业务中字段肯定很多,我在定时往数据库里写的时候如何知道哪些是变化了的呢(即我要更新的字段)
针对玩家数据(个人信息、资产、装备等)由于数据量相对较大,不建议使用redis存储;对于mongodb如果数据设计合理的情况下,更新并不会很慢,而且可以省略由内存到mysql等数据同步的问题;