數(shù)據(jù)的存儲方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)的存儲方法及裝置,在上述方法中,向網(wǎng)絡(luò)側(cè)設(shè)備發(fā)起請求消息,獲取待緩存的網(wǎng)絡(luò)數(shù)據(jù);從緩存實體對象集合中為網(wǎng)絡(luò)數(shù)據(jù)選取一個或多個緩存實體對象,并直接將獲取到的第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,或者,將經(jīng)過序列化處理后的第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中。根據(jù)本發(fā)明提供的技術(shù)方案,進(jìn)而可以減少對網(wǎng)絡(luò)的依賴,節(jié)省網(wǎng)絡(luò)流量和移動終端的電量。
【專利說明】數(shù)據(jù)的存儲方法及裝置
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種數(shù)據(jù)的存儲方法及裝置。
【背景技術(shù)】
[0002]相關(guān)技術(shù)中,無論對于大型應(yīng)用還是小型應(yīng)用而言,靈活的緩存可以說不僅大大減輕了服務(wù)器的壓力,而且因為更快速的用戶體驗而方便了廣大用戶。移動終端應(yīng)用通常歸類于小型應(yīng)用,其中,大部分(99%左右)的應(yīng)用均不需要實時更新,而且詬病于蝸牛般的移動網(wǎng)速,與服務(wù)器的數(shù)據(jù)交互當(dāng)是能少則少,這樣用戶體驗才能更加出色。
[0003]采用緩存可以大大緩解數(shù)據(jù)交互的壓力。緩存管理通常的適用環(huán)境可以包括:
[0004](1)提供網(wǎng)絡(luò)服務(wù)的應(yīng)用;
[0005](2)數(shù)據(jù)無需實時更新,即便是短短幾分鐘的延遲也可以采用緩存機(jī)制;
[0006](3)緩存的過期時間是可以接受的,其不會導(dǎo)致某些數(shù)據(jù)因為更新不及時而影響產(chǎn)品的形象。
[0007]由此,緩存所能帶來的好處有如下幾點:
[0008](1)可以大大減小服務(wù)器的壓力;
[0009](2)客戶端的響應(yīng)速度大大加快;
[0010](3)客戶端數(shù)據(jù)加載出錯的概率大大降低,極大地提高了應(yīng)用的穩(wěn)定性;
[0011](4)在一定程度上可以支持離線瀏覽或者可以說為離線瀏覽提供了技術(shù)支持。
[0012]目前,兩種較為常用的緩存管理方法為:數(shù)據(jù)庫法和文件法。數(shù)據(jù)庫法是在下載完數(shù)據(jù)文件后,將文件的相關(guān)信息,例如:統(tǒng)一資源定位符(URL)、路徑、下載時間、過期時間等存放到數(shù)據(jù)庫,在下次需要下載的時候,可以根據(jù)URL先從數(shù)據(jù)庫中查詢,如果查詢到當(dāng)前時間并未過期,則可以根據(jù)路徑讀取本地文件,從而實現(xiàn)緩存的效果。文件法則是使用File.lastModifiedO方法得到文件的最后修改時間,然后與當(dāng)前時間進(jìn)行比較從而判斷是否過期,進(jìn)而實現(xiàn)緩存的效果。
[0013]然而,相關(guān)技術(shù)中所提供的數(shù)據(jù)緩存解決方案過分地依賴遠(yuǎn)程網(wǎng)絡(luò)服務(wù),同時還需大量地耗費網(wǎng)絡(luò)流量以及移動終端的電量。
【發(fā)明內(nèi)容】
[0014]本發(fā)明提供了一種數(shù)據(jù)的存儲方法及裝置,以至少解決相關(guān)技術(shù)中所提供的數(shù)據(jù)緩存解決方案過分地依賴遠(yuǎn)程網(wǎng)絡(luò)服務(wù),同時還需大量地耗費網(wǎng)絡(luò)流量以及移動終端電量的問題。
[0015]根據(jù)本發(fā)明的一個方面,提供了一種數(shù)據(jù)的存儲方法。
[0016]根據(jù)本發(fā)明的數(shù)據(jù)的存儲方法包括:向網(wǎng)絡(luò)側(cè)設(shè)備發(fā)起請求消息,獲取待緩存的網(wǎng)絡(luò)數(shù)據(jù);從緩存實體對象集合中為網(wǎng)絡(luò)數(shù)據(jù)選取一個或多個緩存實體對象,并直接將獲取到的第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,或者,將經(jīng)過序列化處理后的第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中。
[0017]優(yōu)選地,在將第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中之前,還包括:獲取第一類型的網(wǎng)絡(luò)數(shù)據(jù)的大?。慌袛嗟谝活愋偷木W(wǎng)絡(luò)數(shù)據(jù)的大小是否小于或等于第一緩存實體對象中的剩余存儲空間的大小,其中,第一緩存實體對象在一個或多個緩存實體對象中的存儲優(yōu)先級別最高;如果否,則按照預(yù)設(shè)規(guī)則將第一緩存實體對象中當(dāng)前存儲的部分或全部數(shù)據(jù)進(jìn)行刪除,或者,將第一緩存實體對象中存儲的部分或全部數(shù)據(jù)轉(zhuǎn)移至除第一緩存實體對象之外的其他緩存實體對象中,其中,預(yù)設(shè)規(guī)則包括以下之一:最近最少使用(LRU)規(guī)則、在緩存實體對象中存儲的時間。
[0018]優(yōu)選地,在將第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中之前,還包括:獲取第二類型的網(wǎng)絡(luò)數(shù)據(jù)的大??;判斷第二類型的網(wǎng)絡(luò)數(shù)據(jù)的大小是否小于或等于第一緩存實體對象中的剩余存儲空間的大小;如果否,則按照預(yù)設(shè)規(guī)則將第一緩存實體對象中當(dāng)前存儲的部分或全部數(shù)據(jù)進(jìn)行刪除,或者,將第一緩存實體對象中存儲的部分或全部數(shù)據(jù)轉(zhuǎn)移至除第一緩存實體對象之外的其他緩存實體對象中,其中,預(yù)設(shè)規(guī)則包括以下之一:LRU規(guī)則、在緩存實體對象中存儲的時間。
[0019]優(yōu)選地,在將第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,或者,將第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中之前,還包括:為第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置存儲標(biāo)識,其中,存儲標(biāo)識用于在將第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中之后查找第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)。
[0020]優(yōu)選地,將第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,或者,將第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中包括:判斷一個或多個緩存實體對象中是否已經(jīng)存在存儲標(biāo)識;如果存在,則直接采用第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)對在一個或多個緩存實體對象中當(dāng)前存儲的與存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行覆蓋,或者在對與存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行回調(diào)處理后,再采用第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)對與存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行覆蓋。
[0021]優(yōu)選地,為第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置存儲標(biāo)識包括:遍歷一個或多個緩存實體對象中已經(jīng)存在的全部存儲標(biāo)識;根據(jù)遍歷結(jié)果確定為第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置的存儲標(biāo)識,其中,設(shè)置的存儲標(biāo)識與已經(jīng)存在的全部存儲標(biāo)識均不相同。
[0022]優(yōu)選地,緩存實體對象集合包括以下至少之一:初始配置的內(nèi)存緩存實體對象;初始配置的文件緩存實體對象;初始配置的數(shù)據(jù)庫緩存實體對象;用戶自定義的擴(kuò)展緩存實體對象。
[0023]根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)的存儲裝置。
[0024]根據(jù)本發(fā)明的數(shù)據(jù)的存儲裝置包括:第一獲取模塊,用于向網(wǎng)絡(luò)側(cè)設(shè)備發(fā)起請求消息,獲取待緩存的網(wǎng)絡(luò)數(shù)據(jù);存儲模塊,用于從緩存實體對象集合中為網(wǎng)絡(luò)數(shù)據(jù)選取一個或多個緩存實體對象,并直接將獲取到的第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,或者,將經(jīng)過序列化處理后的第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中。
[0025]優(yōu)選地,上述裝置還包括:第二獲取模塊,用于獲取第一類型的網(wǎng)絡(luò)數(shù)據(jù)的大?。坏谝慌袛嗄K,用于判斷第一類型的網(wǎng)絡(luò)數(shù)據(jù)的大小是否小于或等于第一緩存實體對象中的剩余存儲空間的大小,其中,第一緩存實體對象在一個或多個緩存實體對象中的存儲優(yōu)先級別最高;第一處理模塊,用于在第一判斷模塊輸出為否時,按照預(yù)設(shè)規(guī)則將第一緩存實體對象中當(dāng)前存儲的部分或全部數(shù)據(jù)進(jìn)行刪除,或者,將第一緩存實體對象中存儲的部分或全部數(shù)據(jù)轉(zhuǎn)移至除第一緩存實體對象之外的其他緩存實體對象中,其中,預(yù)設(shè)規(guī)則包括以下之一:LRU規(guī)則、在緩存實體對象中存儲的時間。
[0026]優(yōu)選地,上述裝置還包括:第三獲取模塊,用于獲取第二類型的網(wǎng)絡(luò)數(shù)據(jù)的大?。坏诙袛嗄K,用于判斷第二類型的網(wǎng)絡(luò)數(shù)據(jù)的大小是否小于或等于第一緩存實體對象中的剩余存儲空間的大小;第二處理模塊,用于在第二判斷模塊輸出為否時,按照預(yù)設(shè)規(guī)則將第一緩存實體對象中當(dāng)前存儲的部分或全部數(shù)據(jù)進(jìn)行刪除,或者,將第一緩存實體對象中存儲的部分或全部數(shù)據(jù)轉(zhuǎn)移至除第一緩存實體對象之外的其他緩存實體對象中,其中,預(yù)設(shè)規(guī)則包括以下之一:LRU規(guī)則、在緩存實體對象中存儲的時間。
[0027]優(yōu)選地,上述裝置還包括:設(shè)置模塊,用于為第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置存儲標(biāo)識,其中,存儲標(biāo)識用于在將第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中之后查找第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)。
[0028]優(yōu)選地,存儲模塊包括:判斷單元,用于判斷一個或多個緩存實體對象中是否已經(jīng)存在存儲標(biāo)識;處理單元,用于在判斷單元輸出為是時,則直接采用第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)對在一個或多個緩存實體對象中當(dāng)前存儲的與存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行覆蓋,或者在對與存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行回調(diào)處理后,再采用第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)對與存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行覆蓋。
[0029]優(yōu)選地,設(shè)置模塊包括:遍歷單元,用于遍歷一個或多個緩存實體對象中已經(jīng)存在的全部存儲標(biāo)識;確定單元,用于根據(jù)遍歷結(jié)果確定為第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置的存儲標(biāo)識,其中,設(shè)置的存儲標(biāo)識與已經(jīng)存在的全部存儲標(biāo)識均不相同。
[0030]通過本發(fā)明,采用向網(wǎng)絡(luò)側(cè)設(shè)備發(fā)起請求消息,獲取待緩存的網(wǎng)絡(luò)數(shù)據(jù);從緩存實體對象集合中為網(wǎng)絡(luò)數(shù)據(jù)選取一個或多個緩存實體對象,并直接將獲取到的第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,或者,將經(jīng)過序列化處理后的第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,即通過構(gòu)建的緩存實體對象集合來存儲從網(wǎng)絡(luò)側(cè)設(shè)備接收到的不同類型的網(wǎng)絡(luò)數(shù)據(jù),減少向網(wǎng)絡(luò)側(cè)設(shè)備重復(fù)發(fā)起獲取相同網(wǎng)絡(luò)數(shù)據(jù)的請求,降低與網(wǎng)絡(luò)側(cè)設(shè)備的信息交互頻率,由此解決了相關(guān)技術(shù)中所提供的數(shù)據(jù)緩存解決方案過分地依賴遠(yuǎn)程網(wǎng)絡(luò)服務(wù),同時還需大量地耗費網(wǎng)絡(luò)流量以及移動終端電量的問題,進(jìn)而可以減少對網(wǎng)絡(luò)的依賴,節(jié)省網(wǎng)絡(luò)流量和移動終端的電量。
【專利附圖】
【附圖說明】
[0031]此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0032]圖1是根據(jù)本發(fā)明實施例的數(shù)據(jù)的存儲方法;
[0033]圖2是根據(jù)本發(fā)明優(yōu)選實施例的android平臺緩存管理的示意圖;
[0034]圖3是根據(jù)本發(fā)明實施例的數(shù)據(jù)的存儲裝置的結(jié)構(gòu)框圖;
[0035]圖4是根據(jù)本發(fā)明優(yōu)選實施例的數(shù)據(jù)的存儲裝置的結(jié)構(gòu)框圖。
【具體實施方式】
[0036]下文中將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
[0037]圖1是根據(jù)本發(fā)明實施例的數(shù)據(jù)的存儲方法。如圖1所示,該方法可以包括以下處理步驟:
[0038]步驟S102:向網(wǎng)絡(luò)側(cè)設(shè)備發(fā)起請求消息,獲取待緩存的網(wǎng)絡(luò)數(shù)據(jù);
[0039]步驟S104:從緩存實體對象集合中為網(wǎng)絡(luò)數(shù)據(jù)選取一個或多個緩存實體對象,并直接將獲取到的第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,或者,將經(jīng)過序列化處理后的第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中。
[0040]相關(guān)技術(shù)中所提供的數(shù)據(jù)緩存解決方案過分地依賴遠(yuǎn)程網(wǎng)絡(luò)服務(wù),同時還需大量地耗費網(wǎng)絡(luò)流量以及移動終端電量。采用如圖1所示的方法,向網(wǎng)絡(luò)側(cè)設(shè)備發(fā)起請求消息,獲取待緩存的網(wǎng)絡(luò)數(shù)據(jù)(例如:圖片數(shù)據(jù)、字符串?dāng)?shù)據(jù));從緩存實體對象集合中為網(wǎng)絡(luò)數(shù)據(jù)選取一個或多個緩存實體對象,并直接將獲取到的第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,或者,將經(jīng)過序列化處理后的第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,即通過構(gòu)建的緩存實體對象集合來存儲從網(wǎng)絡(luò)側(cè)設(shè)備接收到的不同類型的網(wǎng)絡(luò)數(shù)據(jù),減少向網(wǎng)絡(luò)側(cè)設(shè)備重復(fù)發(fā)起獲取相同網(wǎng)絡(luò)數(shù)據(jù)的請求,降低與網(wǎng)絡(luò)側(cè)設(shè)備的信息交互頻率,由此解決了相關(guān)技術(shù)中所提供的數(shù)據(jù)緩存解決方案過分地依賴遠(yuǎn)程網(wǎng)絡(luò)服務(wù),同時還需大量地耗費網(wǎng)絡(luò)流量以及移動終端電量的問題,進(jìn)而可以減少對網(wǎng)絡(luò)的依賴,節(jié)省網(wǎng)絡(luò)流量和移動終端的電量。
[0041]需要說明的是,在上述選取的一個或多個緩存實體對象中存儲的網(wǎng)絡(luò)數(shù)據(jù)可以分為兩種類型:
[0042]第一類型、基本數(shù)據(jù)類型以及自身已經(jīng)實現(xiàn)序列化的數(shù)據(jù)類型,例如:int、float、字符串?dāng)?shù)據(jù);該類網(wǎng)絡(luò)數(shù)據(jù)無需再經(jīng)過序列化處理,而可以直接進(jìn)行存儲;
[0043]第二類型、結(jié)構(gòu)體類型或者圖片類型;該類網(wǎng)絡(luò)數(shù)據(jù)只有在經(jīng)過序列化處理后,才能夠進(jìn)行存儲。
[0044]在優(yōu)選實施過程中,上述緩存實體對象集合可以包括但不限于以下至少之一:
[0045]( 1)初始配置的內(nèi)存緩存實體對象;
[0046](2)初始配置的文件緩存實體對象;
[0047](3)初始配置的數(shù)據(jù)庫緩存實體對象;
[0048](4)用戶自定義的擴(kuò)展緩存實體對象。
[0049]在優(yōu)選實施例中,上述緩存實體對象集合實現(xiàn)了一個備份/緩存組件,構(gòu)建了一個框架來統(tǒng)一執(zhí)行不同類型網(wǎng)絡(luò)數(shù)據(jù)的存儲,其初始配置基于緩存抽象類已經(jīng)實現(xiàn)了以文件為存儲載體的數(shù)據(jù)緩存、以內(nèi)存為存儲載體的數(shù)據(jù)緩存以及以數(shù)據(jù)庫為存儲載體的數(shù)據(jù)緩存三種基本的緩存類別,同時用戶也可以根據(jù)自身需要實現(xiàn)抽象類接口定義自己的緩存實現(xiàn)或者繼續(xù)擴(kuò)展已經(jīng)實現(xiàn)的上述三種緩存方式,以滿足實際應(yīng)用過程中的多樣性。在上述兩種功能的基礎(chǔ)上,用戶還可以通過封裝的緩存管理類對象來使用緩存功能。
[0050]下面結(jié)合圖2以安卓(android)平臺的緩存管理組件為例,對android平臺緩存管理的實現(xiàn)方法做進(jìn)一步的詳細(xì)描述。圖2是根據(jù)本發(fā)明優(yōu)選實施例的android平臺緩存管理的示意圖。如圖2所示,android平臺緩存管理如下:
[0051](1)緩存管理類,支持泛型數(shù)據(jù)并可以按照LRU原則對數(shù)據(jù)進(jìn)行淘汰。
[0052]緩存管理類可以提供以下各項功能:
[0053]功能一、清除當(dāng)前類型緩存的所有數(shù)據(jù);
[0054]功能二、根據(jù)K得到當(dāng)前類型緩存的所有數(shù)據(jù)中的V值,其中,K為鍵的數(shù)據(jù)類型,android平臺Java語法支持泛型聲明;V為值的數(shù)據(jù)類型,android平臺Java語法支持泛型聲明;
[0055]功能三、存入緩存對應(yīng)的(Κ-V)數(shù)據(jù);
[0056]功能四、從緩存中移除對應(yīng)(K-V )數(shù)據(jù);
[0057]功能五、獲取緩存的大小;
[0058]功能六、獲取緩存的最大限制;
[0059]在該優(yōu)選實施例中,緩存管理支持泛型鍵-值,可以根據(jù)實際情況進(jìn)行設(shè)置。本緩存管理組件實現(xiàn)的文件緩存和數(shù)據(jù)庫緩存都是〈String, Externalizable〉類型,任何可以序列化的文件或者數(shù)據(jù)都可以進(jìn)行緩存。
[0060]( 2 )緩存實體接口,支持泛型數(shù)據(jù),實現(xiàn)數(shù)據(jù)存取。
[0061]緩存實體的抽象類提供了以下幾類接口:
[0062]第一類接口、獲取該緩存中的最久未被訪問的(Κ-V)數(shù)據(jù),以便在緩存即將溢出時刪除;
[0063]第二類接口、在緩存中根據(jù)KEY得到對應(yīng)的VALUE ;
[0064]第三類接口、根據(jù)KEY向緩存中存入數(shù)據(jù),當(dāng)緩存中已存在與KEY對應(yīng)的數(shù)據(jù)時,返回已經(jīng)存在的對應(yīng)的V值;
[0065]第四類接口、根據(jù)KEY刪除緩存中對應(yīng)的數(shù)據(jù);
[0066]第五類接口、獲取緩存的最大限制值;
[0067]第六類接口、獲取已經(jīng)緩存數(shù)據(jù)的大小/數(shù)量;
[0068]第七類接口、遍歷得到KEY的SET對象。
[0069](3)內(nèi)存緩存類,支持泛型數(shù)據(jù),實現(xiàn)數(shù)據(jù)對象在內(nèi)存中的存取。
[0070](4)文件緩存類,僅支持〈String, Externalizable〉型數(shù)據(jù),實現(xiàn)數(shù)據(jù)對象以文件方式進(jìn)行存取。
[0071](5)數(shù)據(jù)庫緩存類,僅支持〈String, Externalizable〉型數(shù)據(jù),實現(xiàn)數(shù)據(jù)對象以數(shù)據(jù)庫方式進(jìn)行存取。
[0072](6) Externalizable,可序列化的值對象數(shù)據(jù)類型,android平臺下由Externalizable接口完成該功能。
[0073]優(yōu)選地,在步驟S104,將第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中之前,還可以包括以下操作:
[0074]步驟S1:獲取第一類型的網(wǎng)絡(luò)數(shù)據(jù)的大??;
[0075]步驟S2:判斷第一類型的網(wǎng)絡(luò)數(shù)據(jù)的大小是否小于或等于第一緩存實體對象中的剩余存儲空間的大小,其中,第一緩存實體對象在一個或多個緩存實體對象中的存儲優(yōu)先級別最聞;
[0076]步驟S3:如果否,則按照預(yù)設(shè)規(guī)則將第一緩存實體對象中當(dāng)前存儲的部分或全部數(shù)據(jù)進(jìn)行刪除,或者,將第一緩存實體對象中存儲的部分或全部數(shù)據(jù)轉(zhuǎn)移至除第一緩存實體對象之外的其他緩存實體對象中,其中,上述預(yù)設(shè)規(guī)則可以包括但不限于以下之一:LRU規(guī)則、在緩存實體對象中存儲的時間。
[0077]在優(yōu)選實施例中,當(dāng)從網(wǎng)絡(luò)側(cè)設(shè)備接收到網(wǎng)絡(luò)數(shù)據(jù)(例如:字符串?dāng)?shù)據(jù))時,經(jīng)過判斷發(fā)現(xiàn)此種類型的網(wǎng)絡(luò)數(shù)據(jù)不需要進(jìn)行序列化處理,而可以直接作為VALUE值來進(jìn)行存儲。其次,需要從緩存實體對象集合中為網(wǎng)絡(luò)數(shù)據(jù)選取一個或多個緩存實體對象,同時可以指定每個緩存實體對象的最大容量限制。此處的緩存實體對象可以是已經(jīng)配置完成的內(nèi)存緩存實體對象、文件緩存實體對象或者數(shù)據(jù)庫緩存實體對象,當(dāng)然也可以是用戶自定義的擴(kuò)展緩存實體對象。在對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行存儲的過程中,可以預(yù)先設(shè)定存儲策略(例如:緩存實體對象的優(yōu)先級),在該優(yōu)選實施例中,可以設(shè)定內(nèi)存緩存實體對象的優(yōu)先級最高、文件緩存實體對象的優(yōu)先級次之、數(shù)據(jù)庫緩存實體對象的優(yōu)先級排在最后。然后,開始判斷優(yōu)先級最高的內(nèi)存緩存實體對象當(dāng)前的存儲容量是否滿足剛剛接收到的網(wǎng)絡(luò)數(shù)據(jù),如果可以滿足則直接將接收到的網(wǎng)絡(luò)數(shù)據(jù)存儲至內(nèi)存緩存實體對象中。而如果內(nèi)存緩存實體對象當(dāng)前的存儲容量無法容納剛剛接收到的網(wǎng)絡(luò)數(shù)據(jù),此時,可以根據(jù)預(yù)設(shè)規(guī)則(例如:淘汰內(nèi)存緩存實體對象中近期未使用的老化數(shù)據(jù))將近期未使用的老化數(shù)據(jù)存入文件緩存實體對象或者數(shù)據(jù)庫緩存實體對象中,而將剛接收到的網(wǎng)絡(luò)數(shù)據(jù)存入內(nèi)存緩存實體對象,從而能夠靈活地進(jìn)行數(shù)據(jù)緩存處理,以便不影響應(yīng)用的性能和體驗。當(dāng)然,為了不影響終端側(cè)設(shè)備的處理能力,避免過度使用內(nèi)存緩存實體對象,因此,即便內(nèi)存緩存實體對象當(dāng)前的存儲容量可以容納剛剛接收到的網(wǎng)絡(luò)數(shù)據(jù),但是在存入網(wǎng)絡(luò)數(shù)據(jù)后,內(nèi)存緩存實體對象的使用率已經(jīng)超過預(yù)設(shè)比例(例如:80%),此時,也需要根據(jù)預(yù)設(shè)規(guī)則(例如:淘汰內(nèi)存緩存實體對象中近期未使用的老化數(shù)據(jù))將近期未使用的老化數(shù)據(jù)存入文件緩存實體對象或者數(shù)據(jù)庫緩存實體對象中。
[0078]在經(jīng)過上述緩存處理過后,如果下次再訪問該網(wǎng)絡(luò)頁面,需要展示相同的字符串?dāng)?shù)據(jù)時,則無需再向網(wǎng)絡(luò)發(fā)起請求進(jìn)行數(shù)據(jù)交互而是可以直接從內(nèi)存緩存實體對象中獲得相應(yīng)的字符串?dāng)?shù)據(jù)進(jìn)行展示,以便減少網(wǎng)絡(luò)流量、加快頁面展示速度、提升用戶體驗。
[0079]優(yōu)選地,在步驟S104,將第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中之前,還可以包括以下步驟:
[0080]步驟S4:獲取第二類型的網(wǎng)絡(luò)數(shù)據(jù)的大小;
[0081]步驟S5:判斷第二類型的網(wǎng)絡(luò)數(shù)據(jù)的大小是否小于或等于第一緩存實體對象中的剩余存儲空間的大小;
[0082]步驟S6:如果否,則按照預(yù)設(shè)規(guī)則將第一緩存實體對象中當(dāng)前存儲的部分或全部數(shù)據(jù)進(jìn)行刪除,或者,將第一緩存實體對象中存儲的部分或全部數(shù)據(jù)轉(zhuǎn)移至除第一緩存實體對象之外的其他緩存實體對象中,其中,上述預(yù)設(shè)規(guī)則可以包括但不限于以下之一:最近最少使用LRU規(guī)則、在緩存實體對象中存儲的時間。
[0083]在優(yōu)選實施例中,當(dāng)從網(wǎng)絡(luò)側(cè)設(shè)備接收到網(wǎng)絡(luò)數(shù)據(jù)(例如:圖片數(shù)據(jù))時,經(jīng)過判斷發(fā)現(xiàn)此種類型的網(wǎng)絡(luò)數(shù)據(jù)需要進(jìn)行序列化處理,首先,需要實現(xiàn)該數(shù)據(jù)類型的序列化處理,以此才可以作為VALUE值來進(jìn)行存儲。在完成上述序列化準(zhǔn)備工作之后,就可以使用緩存管理組件進(jìn)行緩存。其次,需要從緩存實體對象集合中為網(wǎng)絡(luò)數(shù)據(jù)選取一個或多個緩存實體對象,同時可以指定每個緩存實體對象的最大容量限制。此處的緩存實體對象可以是已經(jīng)配置完成的內(nèi)存緩存實體對象、文件緩存實體對象或者數(shù)據(jù)庫緩存實體對象,當(dāng)然也可以是用戶自定義的擴(kuò)展緩存實體對象。在對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行存儲的過程中,可以預(yù)先設(shè)定存儲策略(例如:緩存實體對象的優(yōu)先級),在該優(yōu)選實施例中,可以設(shè)定內(nèi)存緩存實體對象的優(yōu)先級最高、文件緩存實體對象的優(yōu)先級次之、數(shù)據(jù)庫緩存實體對象的優(yōu)先級排在最后。然后,開始判斷優(yōu)先級最高的內(nèi)存緩存實體對象當(dāng)前的存儲容量是否滿足剛剛接收到的網(wǎng)絡(luò)數(shù)據(jù),如果可以滿足則直接將接收到的網(wǎng)絡(luò)數(shù)據(jù)存儲至內(nèi)存緩存實體對象中。而如果內(nèi)存緩存實體對象當(dāng)前的存儲容量無法容納剛剛接收到的網(wǎng)絡(luò)數(shù)據(jù),此時,可以根據(jù)預(yù)設(shè)規(guī)則(例如:淘汰內(nèi)存緩存實體對象中近期未使用的老化數(shù)據(jù))將近期未使用的老化數(shù)據(jù)存入文件緩存實體對象或者數(shù)據(jù)庫緩存實體對象中,而將剛接收到的網(wǎng)絡(luò)數(shù)據(jù)存入內(nèi)存緩存實體對象,從而能夠靈活地進(jìn)行數(shù)據(jù)緩存處理,以便不影響應(yīng)用的性能和體驗。當(dāng)然,為了不影響終端側(cè)設(shè)備的處理能力,避免過度使用內(nèi)存緩存實體對象,因此,即便內(nèi)存緩存實體對象當(dāng)前的存儲容量可以容納剛剛接收到的網(wǎng)絡(luò)數(shù)據(jù),但是在存入網(wǎng)絡(luò)數(shù)據(jù)后,內(nèi)存緩存實體對象的使用率已經(jīng)超過預(yù)設(shè)比例(例如:80%),此時,也需要根據(jù)預(yù)設(shè)規(guī)則(例如:淘汰內(nèi)存緩存實體對象中近期未使用的老化數(shù)據(jù))將近期未使用的老化數(shù)據(jù)存入文件緩存實體對象或者數(shù)據(jù)庫緩存實體對象中。
[0084]在經(jīng)過上述緩存處理過后,如果下次再訪問該網(wǎng)絡(luò)頁面,需要展示相同的圖片數(shù)據(jù)時,則無需再向網(wǎng)絡(luò)發(fā)起請求進(jìn)行數(shù)據(jù)交互而是可以直接從內(nèi)存緩存實體對象中獲得相應(yīng)的圖片數(shù)據(jù)進(jìn)行展示,以便減少網(wǎng)絡(luò)流量、加快頁面展示速度、提升用戶體驗。
[0085]優(yōu)選地,在步驟S104,將第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,或者,將第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中之前,還可以包括以下處理:
[0086]步驟S7:為第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置存儲標(biāo)識,其中,存儲標(biāo)識用于在將第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中之后查找第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)。
[0087]在優(yōu)選實施例中,可以為每次接收到的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置存儲標(biāo)識KEY,而將網(wǎng)絡(luò)數(shù)據(jù)作為VALUE,建立KEY與VALUE之間的對應(yīng)關(guān)系,存儲至一個或多個緩存實體對象中,由此可以便于后續(xù)通過KEY對已經(jīng)存儲的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行查找。后續(xù)如果需要查找哪次接收到的網(wǎng)絡(luò)數(shù)據(jù),可以在已知KEY的情況下,可以直接使用獲取緩存數(shù)據(jù)功能,通過KEY值查找到對應(yīng)數(shù)據(jù)。如果不知道KEY,則可以通過緩存管理類的獲取KEY集合功能,遍歷找到所有的KEY,然后找到所需KEY值后便可以進(jìn)行查詢。
[0088]優(yōu)選地,在步驟S104中,將第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,或者,將第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中可以包括以下操作:
[0089]步驟S8:判斷一個或多個緩存實體對象中是否已經(jīng)存在存儲標(biāo)識;
[0090]步驟S9:如果存在,則直接采用第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)對在一個或多個緩存實體對象中當(dāng)前存儲的與存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行覆蓋,或者在對與存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行回調(diào)處理后,再采用第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)對與存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行覆蓋。
[0091]在優(yōu)選實施例中,根據(jù)網(wǎng)絡(luò)數(shù)據(jù)的類型,如果是字符串?dāng)?shù)據(jù)可以不需要進(jìn)行序列化處理,而直接作為VALUE值來進(jìn)行存儲;如果是圖片數(shù)據(jù)需要實現(xiàn)該數(shù)據(jù)類型的序列化處理,以此才可以作為VALUE值來進(jìn)行存儲。在存儲過程當(dāng)中,網(wǎng)絡(luò)數(shù)據(jù)以存儲標(biāo)識KEY加以區(qū)分。而在存儲網(wǎng)絡(luò)數(shù)據(jù)時,為網(wǎng)絡(luò)數(shù)據(jù)分配的存儲標(biāo)識KEY并非是唯一的,即緩存實體對象中很可能已經(jīng)存在與為剛接收到的網(wǎng)絡(luò)數(shù)據(jù)分配的存儲標(biāo)識KEY相同的標(biāo)識。此時,緩存實體對象中如果存在與KEY對應(yīng)的數(shù)據(jù),存儲過程中則會采用新數(shù)據(jù)直接覆蓋舊數(shù)據(jù),當(dāng)然,被覆蓋的舊數(shù)據(jù)還可以通過一個回調(diào)接口返回給用戶,具體是否需要進(jìn)行回調(diào)舊數(shù)據(jù)的處理可以根據(jù)用戶個人需求而設(shè)定。
[0092]優(yōu)選地,在步驟S7中,為第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置存儲標(biāo)識可以包括以下步驟:
[0093]步驟S10:遍歷一個或多個緩存實體對象中已經(jīng)存在的全部存儲標(biāo)識;
[0094]步驟S11:根據(jù)遍歷結(jié)果確定為第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置的存儲標(biāo)識,其中,設(shè)置的存儲標(biāo)識與已經(jīng)存在的全部存儲標(biāo)識均不相同。
[0095]在優(yōu)選實施例中,為了避免增加在一個或多個緩存實體對象中查找網(wǎng)絡(luò)數(shù)據(jù)的復(fù)雜性與繁瑣性,同時還為了避免因存儲標(biāo)識相同而覆蓋數(shù)據(jù)所造成的誤操作引起數(shù)據(jù)丟失,因此,在設(shè)置存儲標(biāo)識之前可以首先遍歷各個緩存實體對象中已經(jīng)存在哪些存儲標(biāo)識,然后再設(shè)置一個與當(dāng)前已經(jīng)存在的全部存儲標(biāo)識均不相同的存儲標(biāo)識。
[0096]作為本發(fā)明的一個優(yōu)選實施例,在使用android平臺緩存工具進(jìn)行緩存時的處理流程可以包括以下處理步驟:
[0097]第一步、序列化緩存數(shù)據(jù)類型,實現(xiàn)Externalizable接口 ;
[0098]第二步、實例化緩存管理類,指定緩存策略,即內(nèi)存、文件或者是數(shù)據(jù)庫,同時還可以選擇性的指定緩存最大限制;
[0099]第三步、指定存儲標(biāo)識KEY和序列化的數(shù)據(jù),使用緩存管理類對應(yīng)的緩存功能;
[0100]第四步、判斷KEY和VALUE的合法性,必須均不為空;
[0101]第五步、計算待存儲數(shù)據(jù)的大小,確保其小于或等于緩存最大限制;
[0102]第六步、判斷緩存中標(biāo)識KEY是否已經(jīng)存在,如果存在,新生成的VALUE值將會覆蓋原始值進(jìn)行存儲,根據(jù)指定的緩存策略判斷是否有足夠的存入空間來存儲待緩存的數(shù)據(jù),如果沒有,則需要首先刪除老化數(shù)據(jù);
[0103]在該優(yōu)選實施例中,老化數(shù)據(jù)的判斷方式如下:在內(nèi)存緩存機(jī)制中LinkedHashMap可以按照時間順序進(jìn)行存儲,因此,排在最前面的即為已經(jīng)老化的數(shù)據(jù)。在文件緩存機(jī)制中,數(shù)據(jù)庫除了保存有KEY文件名,還有對應(yīng)文件的創(chuàng)建時間,由此可以根據(jù)該時間進(jìn)行判斷。數(shù)據(jù)庫緩存機(jī)制與文件緩存相類似,在數(shù)據(jù)存儲時會存儲一個時間字段,查詢該時間字段就可以獲知老化數(shù)據(jù)。
[0104]第七步、向緩存中寫入該Κ-V值,在內(nèi)存緩存機(jī)制中已經(jīng)構(gòu)建了依照訪問順序排列的LinkedHashMap,存入數(shù)據(jù)即是增加一條映射條目;文件緩存機(jī)制可以利用數(shù)據(jù)庫保存文件緩存相關(guān)信息,在有數(shù)據(jù)需要存入時,首先根據(jù)KEY生成一個對應(yīng)的文件名,然后向該文件中寫入數(shù)據(jù);同時更新數(shù)據(jù)庫,數(shù)據(jù)庫緩存機(jī)制即為向數(shù)據(jù)庫中新增一個條目;
[0105]第八步、如果是KEY已經(jīng)存在的數(shù)據(jù)緩存,則會通過回調(diào),返回Κ-V舊值;
[0106]在使用上述android平臺緩存工具獲取數(shù)據(jù)時,如果在已知KEY的情況下,可以直接使用獲取緩存數(shù)據(jù)功能,通過KEY值查找到對應(yīng)數(shù)據(jù)。如果不知道KEY,則可以通過緩存管理類的獲取KEY集合功能,遍歷找到所有的KEY,然后找到所需KEY值后便可以進(jìn)行查詢。
[0107]圖3是根據(jù)本發(fā)明實施例的數(shù)據(jù)的存儲裝置的結(jié)構(gòu)框圖。如圖3所示,該數(shù)據(jù)的存儲裝置可以包括:第一獲取模塊100,用于向網(wǎng)絡(luò)側(cè)設(shè)備發(fā)起請求消息,獲取待緩存的網(wǎng)絡(luò)數(shù)據(jù);存儲模塊102,用于從緩存實體對象集合中為網(wǎng)絡(luò)數(shù)據(jù)選取一個或多個緩存實體對象,并直接將獲取到的第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中,或者,將經(jīng)過序列化處理后的第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中。
[0108]采用如圖3所示的裝置,解決了相關(guān)技術(shù)中所提供的數(shù)據(jù)緩存解決方案過分地依賴遠(yuǎn)程網(wǎng)絡(luò)服務(wù),同時還需大量地耗費網(wǎng)絡(luò)流量以及移動終端電量的問題,進(jìn)而可以減少對網(wǎng)絡(luò)的依賴,節(jié)省網(wǎng)絡(luò)流量和移動終端的電量。
[0109]優(yōu)選地,如圖4所示,上述裝置還可以包括:第二獲取模塊104,用于獲取第一類型的網(wǎng)絡(luò)數(shù)據(jù)的大??;第一判斷模塊106,用于判斷第一類型的網(wǎng)絡(luò)數(shù)據(jù)的大小是否小于或等于第一緩存實體對象中的剩余存儲空間的大小,其中,第一緩存實體對象在一個或多個緩存實體對象中的存儲優(yōu)先級別最高;第一處理模塊108,用于在第一判斷模塊輸出為否時,按照預(yù)設(shè)規(guī)則將第一緩存實體對象中當(dāng)前存儲的部分或全部數(shù)據(jù)進(jìn)行刪除,或者,將第一緩存實體對象中存儲的部分或全部數(shù)據(jù)轉(zhuǎn)移至除第一緩存實體對象之外的其他緩存實體對象中,其中,上述預(yù)設(shè)規(guī)則可以包括但不限于以下之一:LRU規(guī)則、在緩存實體對象中存儲的時間。
[0110]優(yōu)選地,如圖4所示,上述裝置還可以包括:第三獲取模塊110,用于獲取第二類型的網(wǎng)絡(luò)數(shù)據(jù)的大??;第二判斷模塊112,用于判斷第二類型的網(wǎng)絡(luò)數(shù)據(jù)的大小是否小于或等于第一緩存實體對象中的剩余存儲空間的大??;第二處理模塊114,用于在第二判斷模塊輸出為否時,按照預(yù)設(shè)規(guī)則將第一緩存實體對象中當(dāng)前存儲的部分或全部數(shù)據(jù)進(jìn)行刪除,或者,將第一緩存實體對象中存儲的部分或全部數(shù)據(jù)轉(zhuǎn)移至除第一緩存實體對象之外的其他緩存實體對象中,其中,上述預(yù)設(shè)規(guī)則可以包括但不限于以下之一:LRU規(guī)則、在緩存實體對象中存儲的時間。
[0111]優(yōu)選地,如圖4所示,上述裝置還可以包括:設(shè)置模塊116,用于為第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置存儲標(biāo)識,其中,存儲標(biāo)識用于在將第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至一個或多個緩存實體對象中之后查找第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)。
[0112]優(yōu)選地,存儲模塊102可以包括:判斷單元(圖中未示出),用于判斷一個或多個緩存實體對象中是否已經(jīng)存在存儲標(biāo)識;處理單元(圖中未示出),用于在判斷單元輸出為是時,則直接采用第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)對在一個或多個緩存實體對象中當(dāng)前存儲的與存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行覆蓋,或者在對與存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行回調(diào)處理后,再采用第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)對與存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行覆蓋。
[0113]優(yōu)選地,設(shè)置模塊116可以包括:遍歷單元(圖中未示出),用于遍歷一個或多個緩存實體對象中已經(jīng)存在的全部存儲標(biāo)識;確定單元(圖中未示出),用于根據(jù)遍歷結(jié)果確定為第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置的存儲標(biāo)識,其中,設(shè)置的存儲標(biāo)識與已經(jīng)存在的全部存儲標(biāo)識均不相同。
[0114]從以上的描述中,可以看出,上述實施例實現(xiàn)了如下技術(shù)效果(需要說明的是這些效果是某些優(yōu)選實施例可以達(dá)到的效果):采用本發(fā)明所提供的技術(shù)方案,實現(xiàn)在本地的網(wǎng)絡(luò)數(shù)據(jù)緩存,當(dāng)本地應(yīng)用程序頻繁地請求網(wǎng)絡(luò)數(shù)據(jù)以及對各種資源的需求較多時,可以通過利用該緩存組件,大大提高移動終端的處理性能,同時還能夠減少對網(wǎng)絡(luò)發(fā)起的請求。本發(fā)明在構(gòu)建了內(nèi)存、文件和數(shù)據(jù)庫三種基本的緩存類別的基礎(chǔ)上,還預(yù)留了對其他緩存制度的擴(kuò)展使用,支持對網(wǎng)絡(luò)圖形的緩存,備份內(nèi)容無限制、可以備份任意數(shù)據(jù)、文件、圖片等從網(wǎng)絡(luò)下載的信息。
[0115]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0116]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)的存儲方法,其特征在于,包括: 向網(wǎng)絡(luò)側(cè)設(shè)備發(fā)起請求消息,獲取待緩存的網(wǎng)絡(luò)數(shù)據(jù); 從緩存實體對象集合中為所述網(wǎng)絡(luò)數(shù)據(jù)選取一個或多個緩存實體對象,并直接將獲取到的第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至所述一個或多個緩存實體對象中,或者,將經(jīng)過所述序列化處理后的第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至所述一個或多個緩存實體對象中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在將所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至所述一個或多個緩存實體對象中之前,還包括: 獲取所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)的大?。? 判斷所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)的大小是否小于或等于第一緩存實體對象中的剩余存儲空間的大小,其中,所述第一緩存實體對象在所述一個或多個緩存實體對象中的存儲優(yōu)先級別最聞; 如果否,則按照預(yù)設(shè)規(guī)則將所述第一緩存實體對象中當(dāng)前存儲的部分或全部數(shù)據(jù)進(jìn)行刪除,或者,將所述第一緩存實體對象中存儲的所述部分或全部數(shù)據(jù)轉(zhuǎn)移至除所述第一緩存實體對象之外的其他緩存實體對象中,其中,所述預(yù)設(shè)規(guī)則包括以下之一:最近最少使用LRU規(guī)則、在所述緩存實體對象中存儲的時間。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在將所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至所述一個或多個緩存實體對象中之前,還包括: 獲取所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)的大小; 判斷所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)的大小是否小于或等于第一緩存實體對象中的剩余存儲空間的大小; 如果否,則按照預(yù)設(shè)規(guī)則將所述第一緩存實體對象中當(dāng)前存儲的部分或全部數(shù)據(jù)進(jìn)行刪除,或者,將所述第一緩存實體對象中存儲的所述部分或全部數(shù)據(jù)轉(zhuǎn)移至除所述第一緩存實體對象之外的其他緩存實體對象中,其中,所述預(yù)設(shè)規(guī)則包括以下之一 ?丄RU規(guī)則、在所述緩存實體對象中存儲的時間。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在將所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至所述一個或多個緩存實體對象中,或者,將所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至所述一個或多個緩存實體對象中之前,還包括: 為所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置存儲標(biāo)識,其中,所述存儲標(biāo)識用于在將所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至所述一個或多個緩存實體對象中之后查找所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,將所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至所述一個或多個緩存實體對象中,或者,將所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至所述一個或多個緩存實體對象中包括: 判斷所述一個或多個緩存實體對象中是否已經(jīng)存在所述存儲標(biāo)識; 如果存在,則直接采用所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)對在所述一個或多個緩存實體對象中當(dāng)前存儲的與所述存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行覆蓋,或者在對與所述存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行回調(diào)處理后,再采用所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)對與所述存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行覆蓋。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,為所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置所述存儲標(biāo)識包括: 遍歷所述一個或多個緩存實體對象中已經(jīng)存在的全部存儲標(biāo)識; 根據(jù)遍歷結(jié)果確定為所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置的存儲標(biāo)識,其中,所述設(shè)置的存儲標(biāo)識與所述已經(jīng)存在的全部存儲標(biāo)識均不相同。
7.根據(jù)權(quán)利要求1至6中任一項所述的方法,其特征在于,所述緩存實體對象集合包括以下至少之一: 初始配置的內(nèi)存緩存實體對象; 初始配置的文件緩存實體對象; 初始配置的數(shù)據(jù)庫緩存實體對象; 用戶自定義的擴(kuò)展緩存實體對象。
8.一種數(shù)據(jù)的存儲裝置,其特征在于,包括: 第一獲取模塊,用于向網(wǎng)絡(luò)側(cè)設(shè)備發(fā)起請求消息,獲取待緩存的網(wǎng)絡(luò)數(shù)據(jù); 存儲模塊,用于從緩存實體對象集合中為所述網(wǎng)絡(luò)數(shù)據(jù)選取一個或多個緩存實體對象,并直接將獲取到的第一類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至所述一個或多個緩存實體對象中,或者,將經(jīng)過所述序列化處理后的第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至所述一個或多個緩存實體對象中。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 第二獲取模塊,用于獲取所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)的大??; 第一判斷模塊,用于判斷所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)的大小是否小于或等于第一緩存實體對象中的剩余存儲空間的大小,其中,所述第一緩存實體對象在所述一個或多個緩存實體對象中的存儲優(yōu)先級別最高; 第一處理模塊,用于在所述第一判斷模塊輸出為否時,按照預(yù)設(shè)規(guī)則將所述第一緩存實體對象中當(dāng)前存儲的部分或全部數(shù)據(jù)進(jìn)行刪除,或者,將所述第一緩存實體對象中存儲的所述部分或全部數(shù)據(jù)轉(zhuǎn)移至除所述第一緩存實體對象之外的其他緩存實體對象中,其中,所述預(yù)設(shè)規(guī)則包括以下之一:最近最少使用LRU規(guī)則、在所述緩存實體對象中存儲的時間。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 第三獲取模塊,用于獲取所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)的大??; 第二判斷模塊,用于判斷所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)的大小是否小于或等于第一緩存實體對象中的剩余存儲空間的大小; 第二處理模塊,用于在所述第二判斷模塊輸出為否時,按照預(yù)設(shè)規(guī)則將所述第一緩存實體對象中當(dāng)前存儲的部分或全部數(shù)據(jù)進(jìn)行刪除,或者,將所述第一緩存實體對象中存儲的所述部分或全部數(shù)據(jù)轉(zhuǎn)移至除所述第一緩存實體對象之外的其他緩存實體對象中,其中,所述預(yù)設(shè)規(guī)則包括以下之一:最近最少使用LRU規(guī)則、在所述緩存實體對象中存儲的時間。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 設(shè)置模塊,用于為所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置存儲標(biāo)識,其中,所述存儲標(biāo)識用于在將所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)存儲至所述一個或多個緩存實體對象中之后查找所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述存儲模塊包括: 判斷單元,用于判斷所述一個或多個緩存實體對象中是否已經(jīng)存在所述存儲標(biāo)識; 處理單元,用于在所述判斷單元輸出為是時,則直接采用所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)對在所述一個或多個緩存實體對象中當(dāng)前存儲的與所述存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行覆蓋,或者在對與所述存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行回調(diào)處理后,再采用所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)對與所述存儲標(biāo)識對應(yīng)的數(shù)據(jù)進(jìn)行覆蓋。
13.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述設(shè)置模塊包括: 遍歷單元,用于遍歷所述一個或多個緩存實體對象中已經(jīng)存在的全部存儲標(biāo)識; 確定單元,用于根據(jù)遍歷結(jié)果確定為所述第一類型的網(wǎng)絡(luò)數(shù)據(jù)或者所述第二類型的網(wǎng)絡(luò)數(shù)據(jù)設(shè)置的存儲標(biāo)識,其中,所述設(shè)置的存儲標(biāo)識與所述已經(jīng)存在的全部存儲標(biāo)識均不相同。
【文檔編號】G06F17/30GK104346345SQ201310315361
【公開日】2015年2月11日 申請日期:2013年7月24日 優(yōu)先權(quán)日:2013年7月24日
【發(fā)明者】吳新玉, 丁巖, 吳亮, 陳小強 申請人:中興通訊股份有限公司