我正在使用GatewayWorkerk開發(fā)一個游戲,每一回合會有很多游戲運行產(chǎn)生的相關(guān)數(shù)據(jù)變量,如何存放和獲取這些數(shù)據(jù)很費腦筋。我是這樣做的,高手們幫參考一下,給點建議。
玩家數(shù)據(jù),比如分數(shù),個人信息等,這一部分數(shù)據(jù)目前是使用Redis存儲。
游戲公共數(shù)據(jù),游戲是回合制的,每一回合都很多數(shù)據(jù),這些數(shù)據(jù)是參與游戲的玩家都有關(guān)聯(lián)的。新開一回合的時候需要把上一回合的結(jié)果數(shù)據(jù)存入數(shù)據(jù)庫,只存?zhèn)€結(jié)果。那么在回合進行過程中的數(shù)據(jù)到底應(yīng)該怎么存放比較合理?放Redis還是全局變量好一下?還有沒有其他辦法?
還有,我想每個回合都new round(),創(chuàng)建一個回合類來保存數(shù)據(jù)和處理業(yè)務(wù),但是同時會有很多回合的游戲在進行,我該怎么區(qū)分和獲取每個游戲進程對應(yīng)的round類,這個round類用全局變量來存儲嗎?
我覺得個人信息數(shù)據(jù)可以直接放GatewayWorker的$_SESSION里。
數(shù)據(jù)是否需要保存在redis中,可以簡單的這樣判斷。
1、對數(shù)據(jù)庫的操作量有多大,比如每秒上萬次讀寫的不重要的臨時數(shù)據(jù),可以放在php內(nèi)存變量里
2、有一些重要的結(jié)果數(shù)據(jù),比如回合結(jié)果,金錢變化等信息,由于比較重要并且讀寫數(shù)據(jù)看不多,必須每次讀寫數(shù)據(jù)庫
3、游戲中的一些過程數(shù)據(jù),比如坐標 狀態(tài)等信息可以存到內(nèi)存變量
4、一些公共的信息,由于每個進程都需要讀取,放入到redis mysql等存儲會更容易共享一些
這里有個飛機游戲坐標類的問答,也可以參考
http://wenda.workerman.net/?/question/523
非常感謝walker的指導(dǎo)。我思路又清晰了很多。然后我又查看了之前的很多帖子。我發(fā)現(xiàn)很多人和我是一樣的情況,之前是從事web開發(fā),思維都是php瞬發(fā)請求然后完畢釋放。所以對現(xiàn)在的開發(fā)模式有很多盲區(qū)。 準備多看看附帶的源代碼,提升提升。