怪我没说清楚,比如我们的业务模型就是社交游戏,社交游戏的用户特点,就是上线之后开始游戏,操作时候十分钟之内关闭游戏下线。我们先定义PHP和MySQL之间有个中间件叫Mcache
在这个过程中,比如用户刚上线
SELECT money,exp FROM user WHERE uid = ‘1’;
于是PHP把这个query通过PHP扩展发给了Mcache,Mcache接到这个query,发现没有数据,于是就向MySQL查到数据存下来再返回给PHP;
几分钟之后,又来了一个操作,加了4个金币
UPDATE user SET money=money+4 WHERE uid = ‘1’;
这时候,Mcache接到这个query,发现已经有数据了,就直接在Mcache中对这个数据修改;
几分钟之后,又来了一个操作,加了10个金币 5点经验
UPDATE user SET money=money+4, exp=exp+5 WHERE uid = ‘1’;
这时候,Mcache接到这个query,发现已经有数据了,就直接在Mcache中对这个数据修改;
又来了一个操作,请求用户当前的金币和经验
SELECT money,exp FROM user WHERE uid = ‘1’;
这时候,Mcache直接就把最新的query发给PHP去了。
当30分钟之后,Mcache自动将这条记录update给MySQL。
这样能减少对MySQL的写入并发,之所以不用NOSQL的方案,是目前NOSQL的方案无法解决回档的问题。而MySQL在热备、增量备份方面的优势是NOSQL方案无法比拟的。你说呢?