用springmvc寫一個(gè)的javaweb項(xiàng)目,在這個(gè)項(xiàng)目中,我定義了一個(gè)static類型的map,用于存放一些記錄數(shù)據(jù)。我希望,所有訪問網(wǎng)站的用戶,取到的該staitc類型的map都是同一個(gè)實(shí)例。比如A用戶訪問該map,并在這個(gè)map中添加了一條記錄,那么當(dāng)B用戶請(qǐng)求時(shí),可以看到這個(gè)map中有A剛剛添加的數(shù)據(jù) 這樣操作能否實(shí)現(xiàn)『所有用戶共享一個(gè)static變量』的要求呢? 為了實(shí)現(xiàn)這個(gè)要求,使用static變量是否合適?還是我應(yīng)該用redis之類的把它存下來呢?
7 回答

SMILET
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
static 變量可以,剛剛的回答有點(diǎn)錯(cuò)誤,和是否單例模式?jīng)]有關(guān)系。static 變量只存在一份。

HUH函數(shù)
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
業(yè)務(wù)大了之后,一個(gè)javaweb實(shí)例肯定是不夠的,建議使用redis。

慕桂英4014372
TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
不建議你這樣使用靜態(tài)變量,正像cauhn說的那樣,如果網(wǎng)站規(guī)模大了,你很可能需要同時(shí)運(yùn)行多個(gè)JVM進(jìn)程(甚至跨服務(wù)器)做負(fù)載均衡,這時(shí)候進(jìn)程內(nèi)部的同步手段就不能用了,只能用跨進(jìn)程的數(shù)據(jù)同步方式,比如數(shù)據(jù)庫或者redis之類的緩存系統(tǒng)。
添加回答
舉報(bào)
0/150
提交
取消