java內(nèi)存分配 jave如何實(shí)現(xiàn)將數(shù)據(jù)庫(kù)數(shù)據(jù)存到內(nèi)存?
jave如何實(shí)現(xiàn)將數(shù)據(jù)庫(kù)數(shù)據(jù)存到內(nèi)存?我的理解是,你想做緩存,減少對(duì)數(shù)據(jù)庫(kù)的壓力。這個(gè)問(wèn)題可以參考許多緩存框架的底層實(shí)現(xiàn)原則。從數(shù)據(jù)庫(kù)中找出數(shù)據(jù)后,使用地圖保存數(shù)據(jù)。當(dāng)然,如果對(duì)同步有要求,一般使用并
jave如何實(shí)現(xiàn)將數(shù)據(jù)庫(kù)數(shù)據(jù)存到內(nèi)存?
我的理解是,你想做緩存,減少對(duì)數(shù)據(jù)庫(kù)的壓力。
這個(gè)問(wèn)題可以參考許多緩存框架的底層實(shí)現(xiàn)原則。從數(shù)據(jù)庫(kù)中找出數(shù)據(jù)后,使用地圖保存數(shù)據(jù)。當(dāng)然,如果對(duì)同步有要求,一般使用并發(fā)映射。鍵使用數(shù)據(jù)的主鍵,或者您定義一個(gè)主鍵以確保它在地圖中是唯一的,并且value是數(shù)據(jù)庫(kù)查詢的值。
這樣,當(dāng)您再次請(qǐng)求時(shí),可以直接從地圖中找到,如果有返回,如果沒(méi)有則從數(shù)據(jù)庫(kù)中查詢,然后放入地圖中。
如果您想做得更好,可以添加緩存過(guò)期時(shí)間。在外部配置了緩存過(guò)期時(shí)間之后,在保存映射時(shí),需要將當(dāng)前時(shí)間放入其中,或者啟動(dòng)一個(gè)映射來(lái)存儲(chǔ)鍵和時(shí)間的對(duì)應(yīng)關(guān)系。每次查詢時(shí),首先檢查時(shí)間是否已過(guò)期。過(guò)期后,從兩個(gè)地圖中刪除數(shù)據(jù),然后檢查數(shù)據(jù)庫(kù)。
當(dāng)然,如果您想更高級(jí),可以檢查用于熱數(shù)據(jù)緩存的LRU緩存失效方案。