3 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果你只是單一的防重,可以把訂單號(hào)放入redis中,下次獲取的時(shí)候比對一下緩存就可以了。既然你是需要最近30分鐘內(nèi)的實(shí)時(shí)訂單數(shù)據(jù),為何不每30分鐘去獲取一次。

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果你的系統(tǒng)是在一個(gè)單機(jī)上運(yùn)行的后臺(tái)的batch job(每分鐘運(yùn)行一次),你只要定義一個(gè)全局變量把每次存儲(chǔ)到數(shù)據(jù)庫的最后一個(gè)訂單id存起來,如果你是按順序存儲(chǔ)訂單。然后把get回來的訂單list里面訂單號(hào)在那個(gè)全局變量之前的訂單都過濾掉,只存儲(chǔ)訂單后在那個(gè)全局變量之后的訂單,并記得每存一次訂單都update一個(gè)那個(gè)全家變量。如果系統(tǒng)是第一次啟動(dòng),可以從數(shù)據(jù)庫load出那個(gè)最大的訂單號(hào)并存在那個(gè)全局變量里。最后,為了保持?jǐn)?shù)據(jù)庫的完整性和一致性,你最好還是把要訂單號(hào)字段設(shè)置成唯一索引。

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
這個(gè)本來就是考慮入時(shí)防重復(fù),而不是出時(shí)防重復(fù).而至于出時(shí)的數(shù)據(jù)重讀問題,每個(gè)訂單肯定有個(gè)獨(dú)立特征,比如時(shí)間戳,ID等,比如第一次取出1-10,那么以10為基點(diǎn),第二次從10開始不就行了?
添加回答
舉報(bào)