一種基于java平臺(tái)的數(shù)據(jù)緩存方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子商務(wù)中數(shù)據(jù)存儲(chǔ)領(lǐng)域,尤其涉及一種基于java平臺(tái)的數(shù)據(jù)緩存方法。
【背景技術(shù)】
[0002]近年來,隨著電子商務(wù)的興起,網(wǎng)購中的“購物車”已成為各大電商企業(yè)最為核心交易基礎(chǔ)組件。購物車也是用戶購物必經(jīng)之路和樞紐,不容有任何閃失,數(shù)據(jù)訪問量龐大,而且不定期量高峰,“購物車”穩(wěn)定性也成為電子商務(wù)企業(yè)系統(tǒng)追求的主要目標(biāo)之一。由于影響購物車穩(wěn)定性因素特多,匯聚了基礎(chǔ)服務(wù)和自身存儲(chǔ)于一體,直接面向公網(wǎng)的購物樞紐。支持購物車的主要基礎(chǔ)服務(wù):商品、促銷、用戶和購物車自身存儲(chǔ),全部為動(dòng)態(tài)實(shí)時(shí)調(diào)用服務(wù),當(dāng)時(shí)的工作重點(diǎn)是處理流量過大時(shí)會(huì)出現(xiàn)基礎(chǔ)服務(wù)無法訪問的問題。此問題真正的瓶頸在于基礎(chǔ)服務(wù):當(dāng)大量用戶搶購時(shí),經(jīng)常會(huì)出現(xiàn)對(duì)熱銷商品的服務(wù),包括促銷、價(jià)格、用戶等,最后落點(diǎn)僅分?jǐn)偟絾蝹€(gè)redis片上,導(dǎo)致整個(gè)交易集群連接數(shù)據(jù)過高,無法響應(yīng)。為了解決此問題,向用戶提供更好的購物體驗(yàn),設(shè)計(jì)出了熱數(shù)據(jù)緩存的方案。
[0003]現(xiàn)有技術(shù)中,如圖1所示,通過利用應(yīng)用服務(wù)器的富余資源,緩存最熱的相關(guān)數(shù)據(jù)。緩存最熱的數(shù)據(jù)時(shí)效很短,緩解基礎(chǔ)服務(wù)的存儲(chǔ)以及服務(wù)器的壓力,而應(yīng)用服務(wù)可水平擴(kuò)充,達(dá)到頻繁訪問的效果,使得整體的速度更快,容量更大。然而,這種“用時(shí)間換取空間”的方式并不適用于電商中的某些具體應(yīng)用場(chǎng)景,例如,“購物車”到結(jié)算頁的數(shù)據(jù)都是實(shí)時(shí)數(shù)據(jù),為了達(dá)到較好用戶體驗(yàn),其緩存時(shí)間要維持在毫秒級(jí),顯然現(xiàn)有技術(shù)的這種方式并不能滿足需求;另外,在一些電商平臺(tái)中,其平臺(tái)架構(gòu)是以java語言實(shí)現(xiàn)的,而Redis存儲(chǔ)是在C語言開辟的內(nèi)存中,跟java平臺(tái)交互需要通過轉(zhuǎn)換,這顯然也延誤了時(shí)間。
【發(fā)明內(nèi)容】
[0004](一 )要解決的技術(shù)問題
[0005]本發(fā)明的目的在于,提供一種基于java平臺(tái)的數(shù)據(jù)緩存方法及系統(tǒng),在緩解因請(qǐng)求量巨大而對(duì)源站帶來壓力的情況下,解決現(xiàn)有技術(shù)方案中時(shí)效性差的問題,徹底滿足了對(duì)商品價(jià)格展示的實(shí)時(shí)性的需求,并能根據(jù)流量增長(zhǎng)的需求進(jìn)行擴(kuò)容。
[0006]( 二)技術(shù)方案
[0007]本發(fā)明提供一種基于java平臺(tái)的數(shù)據(jù)緩存方法及系統(tǒng),包括:
[0008]S1,在每次數(shù)據(jù)訪問中,獲取海量數(shù)據(jù)中每個(gè)數(shù)據(jù)被訪問的頻率;
[0009]S2,篩選出被訪問頻率最高的多個(gè)數(shù)據(jù),并將這些數(shù)據(jù)緩存于java內(nèi)存中。
[0010]本發(fā)明提供還一種基于java平臺(tái)的數(shù)據(jù)緩存系統(tǒng),包括:
[0011 ] 訪問頻率獲取單元,用于在每次數(shù)據(jù)訪問中,獲取海量數(shù)據(jù)中每個(gè)數(shù)據(jù)被訪問的頻率;
[0012]數(shù)據(jù)篩選緩存單元,用于篩選出被訪問頻率最高的多個(gè)數(shù)據(jù),并將多個(gè)數(shù)據(jù)緩存于java內(nèi)存中。
[0013](三)有益效果
[0014]本發(fā)明提供的數(shù)據(jù)緩存方法及系統(tǒng),通過將熱數(shù)據(jù)直接緩存于java內(nèi)存中,并通過queue序列按照先進(jìn)先出的方式存放該熱數(shù)據(jù),緩解了訪問壓力同時(shí),具有較好的時(shí)效性,提高了用戶體驗(yàn)。
【附圖說明】
[0015]圖1是現(xiàn)有技術(shù)中利用應(yīng)用服務(wù)器緩存最熱數(shù)據(jù)的示意圖。
[0016]圖2是本發(fā)明實(shí)施例提供的電子商務(wù)中的數(shù)據(jù)緩存的示意圖。
【具體實(shí)施方式】
[0017]本發(fā)明提供一種基于java平臺(tái)的數(shù)據(jù)緩存方法及系統(tǒng),將被訪問頻率最高的多個(gè)數(shù)據(jù)緩存于java內(nèi)存,同時(shí),通過queue序列按照先進(jìn)先出的方式存放該熱數(shù)據(jù),緩解了訪問壓力同時(shí),具有較好的時(shí)效性,提高了用戶體驗(yàn)。
[0018]根據(jù)本發(fā)明的一種實(shí)施方式,基于java平臺(tái)的數(shù)據(jù)緩存方法包括:
[0019]S1,在每次數(shù)據(jù)訪問中,獲取海量數(shù)據(jù)中每個(gè)數(shù)據(jù)被訪問的頻率;
[0020]S2,篩選出被訪問頻率最高的多個(gè)數(shù)據(jù),并將這些數(shù)據(jù)緩存于java內(nèi)存中。
[0021]根據(jù)本發(fā)明的一種實(shí)施方式,在步驟S2中,在java內(nèi)存中創(chuàng)建一個(gè)queue序列,將被訪問頻率最高的前N個(gè)數(shù)據(jù)作為熱數(shù)據(jù),按照先入先出的順序放入queue序列中,其中,N為所述queue序列的大小,N的取值可根據(jù)海量數(shù)據(jù)的大小而確定,例如,在海量數(shù)據(jù)的大小為1T時(shí),N取1000。
[0022]根據(jù)本發(fā)明的一種實(shí)施方式,根據(jù)熱數(shù)據(jù)在所述queue序列存在的時(shí)間,判斷該熱數(shù)據(jù)是否失效,若未失效,則將該熱數(shù)據(jù)保留在所述queue序列中,否則將該熱數(shù)據(jù)從所述queue序列中刪除。
[0023]根據(jù)本發(fā)明的一種實(shí)施方式,在判斷該熱數(shù)據(jù)是否失效時(shí),將該熱數(shù)據(jù)存在于queue序列的時(shí)間與一閾值進(jìn)行比較,若小于等于該閾值,則判定該熱數(shù)據(jù)未失效,否則判定該熱數(shù)據(jù)已失效。
[0024]根據(jù)本發(fā)明的一種實(shí)施方式,基于java平臺(tái)的數(shù)據(jù)緩存系統(tǒng)包括:
[0025]訪問頻率獲取單元,用于在每次數(shù)據(jù)訪問中,獲取海量數(shù)據(jù)中每個(gè)數(shù)據(jù)被訪問的頻率;
[0026]數(shù)據(jù)篩選緩存單元,用于篩選出被訪問頻率最高的多個(gè)數(shù)據(jù),并將多個(gè)數(shù)據(jù)緩存于java內(nèi)存中。
[0027]根據(jù)本發(fā)明的一種實(shí)施方式,數(shù)據(jù)篩選緩存單元在java內(nèi)存中創(chuàng)建一個(gè)queue序列,將被訪問頻率最高的前N個(gè)數(shù)據(jù)作為熱數(shù)據(jù),按照先入先出的順序放入queue序列中,其中,N為queue序列的大小。
[0028]根據(jù)本發(fā)明的一種實(shí)施方式,根據(jù)熱數(shù)據(jù)在queue序列存在的時(shí)間,判斷該熱數(shù)據(jù)是否失效,若未失效,則將該熱數(shù)據(jù)保留在queue序列中,否則將該熱數(shù)據(jù)從queue序列中刪除。
[0029]根據(jù)本發(fā)明的一種實(shí)施方式,在判斷該熱數(shù)據(jù)是否失效時(shí),將該熱數(shù)據(jù)存在于所述queue序列的時(shí)間與一閾值進(jìn)行比較,若小于等于該閾值,則判定該熱數(shù)據(jù)未失效,否則判定該熱數(shù)據(jù)已失效。
[0030]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。
[0031]本發(fā)明在電商領(lǐng)域應(yīng)用廣泛,這里提供本發(fā)明應(yīng)用于網(wǎng)購中“購物車”的實(shí)施例。
[0032]如圖2所示,“購物車”作為java網(wǎng)購平臺(tái)的水平應(yīng)用,并且分配有java內(nèi)存,其中,在java內(nèi)存中設(shè)有一 queue序列,該水平應(yīng)用不斷訪問基礎(chǔ)數(shù)據(jù)服務(wù)中的商品數(shù)據(jù),并獲取每個(gè)商品數(shù)據(jù)被訪問的頻率,在水平應(yīng)用中,篩選出被訪問頻率最高的多個(gè)商品數(shù)據(jù),并將這些商品數(shù)據(jù)緩存于queue序列中,其中queue序列的大小可由電子商務(wù)平臺(tái)規(guī)模設(shè)定,電子商務(wù)平臺(tái)規(guī)模越大,其可能存放在購物車中的商品也就越多,例如,平臺(tái)允許用戶在購物車中存放50個(gè)商品,即queue序列的大小為50。
[0033]隨著網(wǎng)購的進(jìn)行,系統(tǒng)會(huì)根據(jù)商品數(shù)據(jù)在queue序列存在的時(shí)間,判斷該商品數(shù)據(jù)是否失效,若未失效,則將該數(shù)據(jù)保留在queue序列中,否則將該數(shù)據(jù)從所述queue序列中刪除。具體地,系統(tǒng)將該商品數(shù)據(jù)存在于queue序列的時(shí)間與一閾值進(jìn)行比較,若小于等于該閾值,則判定該熱數(shù)據(jù)未失效,否則判定該熱數(shù)據(jù)已失效,其中,該閾值可由系統(tǒng)進(jìn)行設(shè)定,也可由用戶自己設(shè)定,如商品在購物車中存在3個(gè)月以上時(shí),可將該商品在購物車中刪除。
[0034]以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種基于java平臺(tái)的數(shù)據(jù)緩存方法,其特征在于,包括: SI,在每次數(shù)據(jù)訪問中,獲取海量數(shù)據(jù)中每個(gè)數(shù)據(jù)被訪問的頻率; S2,篩選出被訪問頻率最高的多個(gè)數(shù)據(jù),并將所述多個(gè)數(shù)據(jù)緩存于java內(nèi)存中。2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)緩存方法,其特征在于,在所述步驟S2中,在所述java內(nèi)存中,創(chuàng)建一個(gè)queue序列,將被訪問頻率最高的前N個(gè)數(shù)據(jù)作為熱數(shù)據(jù),按照先入先出的順序放入所述queue序列中,其中,N為所述queue序列的大小。3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)緩存方法,其特征在于,根據(jù)所述熱數(shù)據(jù)在所述queue序列存在的時(shí)間,判斷該熱數(shù)據(jù)是否失效,若未失效,則將該熱數(shù)據(jù)保留在所述queue序列中,否則將該熱數(shù)據(jù)從所述queue序列中刪除。4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)緩存方法,其特征在于,在判斷該熱數(shù)據(jù)是否失效時(shí),將該熱數(shù)據(jù)存在于所述queue序列的時(shí)間與一閾值進(jìn)行比較,若小于等于該閾值,則判定該熱數(shù)據(jù)未失效,否則判定該熱數(shù)據(jù)已失效。5.一種基于java平臺(tái)的數(shù)據(jù)緩存系統(tǒng),其特征在于,包括: 訪問頻率獲取單元,用于在每次數(shù)據(jù)訪問中,獲取海量數(shù)據(jù)中每個(gè)數(shù)據(jù)被訪問的頻率; 數(shù)據(jù)篩選緩存單元,用于篩選出被訪問頻率最高的多個(gè)數(shù)據(jù),并將所述多個(gè)數(shù)據(jù)緩存于java內(nèi)存中。6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)緩存方法,其特征在于,數(shù)據(jù)篩選緩存單元在所述java內(nèi)存中創(chuàng)建一個(gè)queue序列,將被訪問頻率最高的前N個(gè)數(shù)據(jù)作為熱數(shù)據(jù),按照先入先出的順序放入所述queue序列中,其中,N為所述queue序列的大小。7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)緩存方法,其特征在于,根據(jù)所述熱數(shù)據(jù)在所述queue序列存在的時(shí)間,判斷該熱數(shù)據(jù)是否失效,若未失效,則將該熱數(shù)據(jù)保留在所述queue序列中,否則將該熱數(shù)據(jù)從所述queue序列中刪除。8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)緩存方法,其特征在于,在判斷該熱數(shù)據(jù)是否失效時(shí),將該熱數(shù)據(jù)存在于所述queue序列的時(shí)間與一閾值進(jìn)行比較,若小于等于該閾值,則判定該熱數(shù)據(jù)未失效,否則判定該熱數(shù)據(jù)已失效。
【專利摘要】本發(fā)明公開了一種基于java平臺(tái)的數(shù)據(jù)緩存方法及系統(tǒng),將被訪問頻率最高的多個(gè)數(shù)據(jù)緩存于java內(nèi)存,同時(shí),通過queue序列按照先進(jìn)先出的方式存放該熱數(shù)據(jù),緩解了訪問壓力同時(shí),具有較好的時(shí)效性,提高了用戶體驗(yàn)。
【IPC分類】G06F12/0802
【公開號(hào)】CN105279104
【申請(qǐng)?zhí)枴緾N201510830707
【發(fā)明人】楊超
【申請(qǐng)人】北京京東尚科信息技術(shù)有限公司, 北京京東世紀(jì)貿(mào)易有限公司
【公開日】2016年1月27日
【申請(qǐng)日】2015年11月25日