今天在對一個數(shù)據(jù)量比較小的數(shù)據(jù)存放問題上,苦惱了有十幾分鐘,然后就問了一下前輩。分享一下
存放數(shù)據(jù)到緩存中的主要依據(jù)是,看這些數(shù)據(jù)是否需要頻繁的查詢數(shù)據(jù)庫,也就是這些數(shù)據(jù)是否是頻繁的變動的。
如果是頻繁的變動的,最好放在緩存中。在游戲中,一個人的操作保存下來是小數(shù)據(jù),但是很多人的數(shù)據(jù)放在一塊,那變動就很大了。
還有一點就是緩存容量的問題,這個我也問了一下,緩存容量應(yīng)該是有限的,所以需要通過限制訪問,比如說一個區(qū)爆滿,就不讓進了,應(yīng)該就是數(shù)據(jù)量太大,對服務(wù)器造成了負擔(dān)。
更新數(shù)據(jù)的時候,優(yōu)先更新靜態(tài)的數(shù)據(jù),數(shù)據(jù)庫中的數(shù)據(jù)先更新,才可以更新緩存中的數(shù)據(jù)。如果數(shù)據(jù)庫更新失敗,就會報錯,這時候緩存中的數(shù)據(jù)就不會更新了。如果先更新緩存中的數(shù)據(jù),數(shù)據(jù)庫中的數(shù)據(jù)如果更新失敗了,會造成數(shù)據(jù)混亂的情況,顯示在客戶端的不是真實的數(shù)據(jù)。用戶下次進入游戲就會變化。
處理邏輯的時候,最常用的就是
async.waterfall ([
? ? ? ? ? function(cb){.....},
? ? ? ? ? function(cb){.....}
],function(err,info){
});
所有的邏輯放在這里面清晰可見,而且邏輯思路非常的清晰。這是自己的一個體會。
