專利名稱:一種數(shù)據(jù)緩存的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本申請涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)緩存的方法及裝置。
背景技術(shù):
隨著數(shù)據(jù)庫技術(shù)的不斷成熟,數(shù)據(jù)庫的存儲量日趨增大,從而可以為用戶提供更加豐富的數(shù)據(jù)資源,用戶可以從數(shù)據(jù)庫中獲取所需要的數(shù)據(jù)。在實際應(yīng)用中,對于用戶需求量大的系統(tǒng),例如一個日訪問量達(dá)到百萬級的網(wǎng)站,由于每個用戶的愛好、需求不盡相同,在單位時間內(nèi),需要處理大量的數(shù)據(jù)分析和訪問工作,對系統(tǒng)性能和用戶瀏覽速度也會造成影響,給用戶的數(shù)據(jù)瀏覽速度提升造成瓶頸。為了解決上述問題,一般采用將用戶需要瀏覽的數(shù)據(jù)初始化到內(nèi)存中緩存起來,用戶訪問網(wǎng)站時可以從內(nèi)存中獲取數(shù)據(jù)。數(shù)據(jù)緩存一般有兩種方式,一種是服務(wù)端緩存,另一種是客戶端緩存?,F(xiàn)假設(shè)用于存儲數(shù)據(jù)的內(nèi)存為一個緩存池,其中存儲的數(shù)據(jù)稱之為元素,來詳細(xì)闡述現(xiàn)有技術(shù)中,基于萬維網(wǎng)(WEB)的系統(tǒng)是如何實現(xiàn)在客戶端動態(tài)緩存數(shù)據(jù)的?,F(xiàn)有技術(shù)中,為了實現(xiàn)在客戶端動態(tài)緩存數(shù)據(jù),一般采用下述三種方式:第一種方式:根據(jù)超文本傳輸(http)協(xié)議中規(guī)定的相應(yīng)屬性(如cache_control, etag等),由服務(wù)端在http響應(yīng)頭中設(shè)置數(shù)據(jù)緩存時間等屬性值來實現(xiàn)客戶端動態(tài)緩存數(shù)據(jù)。例如,由服務(wù)端在http響應(yīng)頭中設(shè)置對應(yīng)http請求所獲取的數(shù)據(jù)的存儲時間為兩個小時,客戶端不能縮短或延長時間。則在兩個小時之后,無論該數(shù)據(jù)是否還需要被用戶訪問,都需要將該數(shù)據(jù)進(jìn)行清理。第二種方式:應(yīng)用html5標(biāo)準(zhǔn)中的本地存儲來實現(xiàn)客戶端動態(tài)緩存數(shù)據(jù)。第三種方式:在客戶端采用緩存算法實現(xiàn)數(shù)據(jù)緩存管理,例如,采用先進(jìn)先出的隊列管理算法來管理緩存池中的各個元素。即先進(jìn)入緩存池的元素,在緩存池容量達(dá)到預(yù)設(shè)的閾值時,即使該元素是被頻繁訪問的,該元素也會被清理。上述三種方式,分別存在下述缺陷:對于第一種方式:需要依賴服務(wù)端進(jìn)行屬性值設(shè)置,屬性值在設(shè)置完成以后,客戶端不能夠?qū)ζ溥M(jìn)行控制,例如客戶端不能夠更改或者延長數(shù)據(jù)存儲時間,所以這種方式靈活性較差。對于第二種方式:兼容性較差,并非所有瀏覽器都支持html5標(biāo)準(zhǔn),特別是舊版瀏覽器,例如ie9以下版本都不支持html5。對于第三種方式:由于受制于WEB系統(tǒng)的客戶端平臺、語言和資源等各方面的限制,客戶端能夠采用的算法一般比較簡單,使得用戶在訪問緩存池中的元素時,該元素可能已經(jīng)被清理,所以命中率較低,從而影響了整個系統(tǒng)的性能。綜上所述,現(xiàn)有技術(shù)中,基于WEB系統(tǒng)的客戶端在進(jìn)行數(shù)據(jù)緩存時,靈活性較差、在占用系統(tǒng)資源低的情 況下實現(xiàn)數(shù)據(jù)被訪問時命中率較低,使得系統(tǒng)的性能也較差
發(fā)明內(nèi)容
本申請實施例提供一種數(shù)據(jù)緩存的方法及裝置,能夠較好地提高基于WEB系統(tǒng)的客戶端在進(jìn)行數(shù)據(jù)緩存時的靈活性以及數(shù)據(jù)被訪問時的命中率,并改善系統(tǒng)的性能。本申請實施例提出的技術(shù)方案如下:一種數(shù)據(jù)緩存的方法,包括:根據(jù)緩存池中每次新加入元素的情況和緩存池中已加入元素被訪問的命中次數(shù),為緩存池中的每個元素分別維護(hù)重要度信息;在每次需要對緩存池中的元素進(jìn)行清理時,參照緩存池中各個元素的排序結(jié)果,對所述緩存池中存儲的元素進(jìn)行清理,其中所述排序結(jié)果為根據(jù)分別為緩存池中的每個元素分別維護(hù)的重要度信息,按照預(yù)設(shè)的規(guī)則對緩存池中的各個元素進(jìn)行排序得到的。一種數(shù)據(jù)緩存的裝置,包括:重要度信息維護(hù)單元,用于根據(jù)緩存池中每次新加入元素的情況和緩存池中已加入元素被訪問的命中次數(shù),為緩存池中的每個元素分別維護(hù)重要度信息;排序單元,用于在每次需要對緩存池中的元素進(jìn)行清理時,根據(jù)重要度信息維護(hù)單元分別為緩存池中的每個元素分別維護(hù)的重要度信息,按照預(yù)設(shè)的規(guī)則對緩存池中的各個元素進(jìn)行排序。緩存池清理單元,用于在每次需要對緩存池中的元素進(jìn)行清理時,參照排序單元為緩存池中各個元素的排序結(jié)果,對所述緩存池中存儲的元素進(jìn)行清理。采用上述技術(shù)方案,根據(jù)緩存池中每次新加入元素的情況和緩存池中已經(jīng)存儲的元素被訪問的次數(shù),為緩存池中的每個元素分別維護(hù)重要度信息,在每次需要對緩存池中的元素進(jìn)行清理時,參照緩存池中各個元素的排序結(jié)果,對所述緩存池中存儲的元素進(jìn)行清理,從而能夠較好地提高緩存池在進(jìn)行緩存時的靈活性以及在占用系統(tǒng)資源低的情況下,實現(xiàn)數(shù)據(jù)被訪問時的高命中率,并改善系統(tǒng)的性能。
圖1為本申請實施例一中,提出的數(shù)據(jù)緩存的方法流程
圖2為本申請實施例一中,提出的緩存池組成示意圖;圖3為本申請實施例一中,提出的對緩存池中的元素進(jìn)行排序得到的排序結(jié)果示意圖;圖4為本申請實施例二中,提出的數(shù)據(jù)緩存的裝置結(jié)構(gòu)圖;圖5為本申請實施例三中,提出的數(shù)據(jù)緩存的方法流程圖。
具體實施例方式針對現(xiàn)有技術(shù)中存在的基于WEB系統(tǒng)的客戶端在進(jìn)行數(shù)據(jù)緩存時的靈活性較差,以及數(shù)據(jù)被訪問時的命中率較低的問題,本申請這里提出的數(shù)據(jù)緩存的方法,根據(jù)緩存池中每次新加入元素的情況和緩存池中已經(jīng)存儲的元素被訪問的次數(shù),為緩存池中的每個元素分別維護(hù)重要度信息,在每次需要對緩存池中的元素進(jìn)行清理時,參照緩存池中各個元素的排序結(jié)果,對緩存池中存儲的元素進(jìn)行清理,從而能夠較好地提高緩存池在進(jìn)行緩存時的靈活性以及緩存池中的元素被訪問時的命中率,并改善系統(tǒng)的性能。下面將結(jié)合各個附圖對本申請實施例提出的技術(shù)方案的主要實現(xiàn)原理具體實施方式
及其對應(yīng)能夠達(dá)到的有益效果進(jìn)行詳細(xì)地闡述。需要說明的是,本申請各實施例中提到的緩存池,可以是存儲在內(nèi)存中的一個數(shù)據(jù)塊,也可以是存儲在內(nèi)存中的多個數(shù)據(jù)塊,每一個數(shù)據(jù)塊對應(yīng)一個緩存池。其中,各數(shù)據(jù)塊的存儲空間可以相同,也可以不同。實施例一本申請實施例一這里提出數(shù)據(jù)緩存的方法,如圖1所示,其具體處理過程如下:步驟101,記錄緩存池中已經(jīng)存儲的元素被訪問的命中次數(shù),以及記錄緩存池中每次新加入元素的情況。其中,緩存池中存儲的每個元素,都采用唯一的標(biāo)識與其對應(yīng)。命中次數(shù)是指用戶終端對緩存池中存儲的元素的訪問次數(shù),在緩存池中存儲的元素,每被訪問一次,則記錄對應(yīng)該被訪問的元素的命中次數(shù)就增加I。由于緩存池中存儲的元素是不斷的動態(tài)更新的,所以對新加入元素的判斷可以根據(jù)該元素加入緩沖池的時間來判斷,更新時間最新的元素就可以確定為新加入緩存池的元素。例如,當(dāng)用戶終端需要訪問一個元素時,但是由于緩存池中并沒有存儲該元素,所以此時客戶端需要向服務(wù)端發(fā)起訪問該元素的請求,然后將服務(wù)端發(fā)來的與該元素信息存儲到緩存池中,后續(xù)用戶終端如果需要再次訪問該元素時,就可以在緩存池中直接訪問該元素了,即由服務(wù)端發(fā)來的最新存儲到緩存池中的元素就是新加入到緩存池中的元素。每產(chǎn)生一個新加入到緩存池中的元素,則記錄緩存池中新加入元素的數(shù)量就增加I。具體地,可以但不限于采用計數(shù)器累加的方式來記錄緩存池中已經(jīng)存儲的元素被訪問的命中次數(shù)和緩存池中每次新加入元素的數(shù)量,或者采用計數(shù)器觸發(fā)的方式來記錄緩存池中已經(jīng)存儲的元素被訪問的命中次數(shù)和緩存池中每次新加入元素的數(shù)量。步驟102,根據(jù)記錄的緩存池中每次新加入元素的情況和緩存池中已加入元素被訪問的命中次數(shù),為緩存池中的每個元素分別維護(hù)重要度信息。其中,緩存池中的每個元素,都對應(yīng)維護(hù)著一個重要度信息,重要度信息是由每次新加入元素的情況和緩存池中已加入元素的被訪問的命中次數(shù)決定的。
`
具體地,當(dāng)有新元素加入到緩存池中時,設(shè)置一個默認(rèn)值作為該新加入元素的重要度信息,并將為緩存池中除該新加入的元素之外的每個元素分別維護(hù)的重要度信息,更新為原重要度信息減去一個第一預(yù)設(shè)值。當(dāng)緩存池中的一個元素被訪問命中時,將為該被訪問命中的元素維護(hù)的重要度信息,更新為原重要度信息加上一個第二預(yù)設(shè)值。具體地,第一預(yù)設(shè)值的取值可以小于第二預(yù)設(shè)值。較佳地,本申請實施例一這里提出的技術(shù)方案,將第一預(yù)設(shè)值設(shè)置為數(shù)值“ I ”,將第二預(yù)設(shè)值設(shè)置為緩存池中當(dāng)前已經(jīng)存儲的元素的總數(shù)量,這樣,第二預(yù)設(shè)值可以根據(jù)緩存池中存儲的元素的數(shù)量動態(tài)變化。例如當(dāng)前緩存池中已經(jīng)存儲的元素的總數(shù)量n,則此時第二預(yù)設(shè)值為η。當(dāng)有新元素加入到緩存池中時,設(shè)置數(shù)值“O”作為該新加入元素的重要度信息,然后將緩存池中除該新加入的元素之外的每個元素的重要度信息減去第一預(yù)設(shè)值“1”,得到的結(jié)果作為為該元素維護(hù)的重要度信息。并且,當(dāng)緩存池中存儲的一個元素被用戶終端訪問命中時(包含新加入緩存池的元素被用戶終端訪問命中時),將為該被訪問命中的元素維護(hù)的重要度信息,加上第二預(yù)設(shè)值η (η為緩存池中的當(dāng)前元素總數(shù)),得到的結(jié)果作為為該被訪問命中的元素維護(hù)的重要度信息。例如,如圖2所示,緩存池A中存儲著5個元素,5個元素的標(biāo)識信息分別為Κ1,
Κ2......Κ5,新加入的元素的標(biāo)識信息為Κ6,對應(yīng)這6個元素分別維護(hù)的重要度信息為W1,
W2......W6,則按照本步驟中的實施原理,在元素Κ6加入時,設(shè)置Κ6的重要度信息為W6 =O,同時將分別為Kl,K2......K5維護(hù)的重要度信息更新為:W1_1,W2_l......W5_l。接下
來,如果緩存池中的元素K5被用戶終端訪問,則由于此時緩沖池中已經(jīng)存儲有6個元素,所以對應(yīng)將為K5維護(hù)的重要度信息更新為W5_l+6。步驟103,在每次需要對緩存池中的元素進(jìn)行清理時,參照緩存池中各個元素的排序結(jié)果,對該緩存池中存儲的元素進(jìn)行清理,其中,所述排序結(jié)果為根據(jù)分別為緩存池中的每個元素分別維護(hù)的重要度信息,按照預(yù)設(shè)的規(guī)則對緩存池中的各個元素進(jìn)行排序得到的。由于緩存池的存儲空間是有限的,緩存池中存儲的元素被用戶終端訪問的頻率也是有限的,所以為了避免因為緩存池中存儲的元素因為長時間不被用戶終端訪問,而浪費緩存池的存儲資源,并且新的元素又無法加入到緩存池中來的問題,所以需要對緩存池中存儲的元素進(jìn)行清理。其中,對緩存池中的元素進(jìn)行清理,可以周期性執(zhí)行(例如,可以預(yù)先設(shè)定一個定時器,周期性的觸發(fā)清理機(jī)制),也可以根據(jù)緩存池的存儲容量來確定是否要對該緩存池中的元素進(jìn)行清理。具體的,根據(jù)緩存池的存儲容量來確定是否要對緩存池中的元素進(jìn)行清理,可以但不限于采用下述方式:第一種方式:在該緩存池中已被占用的存儲容量大于預(yù)設(shè)的第一閾值時,確定需要對該緩存池中存儲的元素進(jìn)行清理。其中,緩存池中已被占用的存儲容量可以根據(jù)緩存池中存儲的每個元素的容量大小來確定,例如,緩存池的總?cè)萘繛?00K,緩存池中的每個元素的容量大小不一樣,有幾百字節(jié),也有幾K的,此時可以將第一閾值預(yù)先設(shè)定為3 90K,如果緩存池中存儲的元素的總?cè)萘看笥陬A(yù)設(shè)的390K,則確定需要對緩存池中存儲的元素進(jìn)行清理。較佳地,由于客戶端緩存中存儲的數(shù)據(jù)的容量一般都比較小,這樣,緩存池中的存儲容量也可以根據(jù)經(jīng)驗,確定該緩存池能夠存儲多少個元素。例如,根據(jù)經(jīng)驗,可以選擇一個平均值,然后將緩存池的容量值與該平均值求商,得到的結(jié)果作為緩存池的存儲容量值,即采用此技術(shù)方案,對應(yīng)緩存池的容量為該緩存池中能夠存儲多少個元素。例如,緩存池的總?cè)萘繛?00K,根據(jù)經(jīng)驗,獲得一個平均值2k,得到的結(jié)果為該緩存池的容量為200 (即該緩存池一共能夠存儲200個元素)。較佳地,還可以根據(jù)系統(tǒng)的處理性能,預(yù)設(shè)的第一閾值可以略大于緩存池的容量值。例如,緩存池中能夠存儲200個元素,相應(yīng)地,可以將第一閾值設(shè)定為206。第二種方式:在該緩存池中已經(jīng)被占用的存儲容量大于預(yù)設(shè)的第二閾值且有新元素加入該緩存池時,確定需要對所述緩存池中存儲的元素進(jìn)行清理。需要說明的是,當(dāng)緩存池中的容量達(dá)到預(yù)先設(shè)定的閾值時,但是在此時,并沒有新元素要加入該緩存池,所以可以暫時不對緩存池中存儲的元素進(jìn)行清理。其中,預(yù)先設(shè)定的第二閾值可以與上述在第一種方式中預(yù)設(shè)的第一閾值相同,也可以不相同。其中,按照預(yù)先設(shè)定的規(guī)則對緩存池中的各個元素進(jìn)行排序,可以但不限于采用下述兩種方法:第一種方法:如圖3所示,可以根據(jù)分別為緩存池中的每個元素分別維護(hù)的重要
度信息從大到小的順序,對緩存池中的元素進(jìn)行排序。其中,Kl......KN標(biāo)識緩存池中的N
個元素,對應(yīng)的重要度信息分別為Wl......WN,對應(yīng)的每個元素被用戶終端訪問的命中次數(shù)分別為Vl......VN。其中,對于上述排序方法,如果緩存池中的有重要度信息相同的元素時,在排序時,可以再判斷相同重要度信息分別對應(yīng)的元素的被訪問的命中次數(shù),將訪問命中次數(shù)比較多的元素排在前面。第二種方法:根據(jù)分別為緩存池中的每個元素分別維護(hù)的重要度信息從小到大的順序,對緩存池中的元素進(jìn)行排序。其中,對于上述排序方法,如果緩存池中的有重要度信息相同的元素時,在排序時,也可以再判斷相同重要度信息分別對應(yīng)的元素的被訪問的命中次數(shù),將訪問命中次數(shù)比較多的元素的元素排在后面。需要說明的是,本申請?zhí)岢龅呐判蚍椒?,并非僅僅局限于上述兩種排序原則,實際應(yīng)用中可以根據(jù)需要對排序原則進(jìn)行設(shè)置。并且,按照預(yù)先設(shè)定的規(guī)則,根據(jù)分別為緩存池中的每個元素分別維護(hù)的重要度信息,對緩存池中的各個元素進(jìn)行排序的時機(jī),可以選擇在重要度信息有更新的時候就執(zhí)行,也可以選擇在需要對緩存池中存儲的元素進(jìn)行清理時,再執(zhí)行對緩存池中的元素進(jìn)行排序,而在需要對該緩存池中存儲的元素進(jìn)行清理時,可以根據(jù)最新的排序結(jié)果執(zhí)行相應(yīng)的操作即可。一種較佳地實現(xiàn)方式,本申請實施例一這里提出的技術(shù)方案中,當(dāng)緩存池中的存儲的元素對應(yīng)的重要度信息發(fā)生變化時,即按照變化后的對應(yīng)每個元素的重要度信息,對緩存池中的元素的排序進(jìn)行調(diào)整,這樣可以使得緩存池中的每個元素始終保持有序的狀態(tài),可以較好地節(jié)省系統(tǒng)的開銷,從而提高系統(tǒng)的處理性能。
具體地,根據(jù)上述第一種方法得到的排序結(jié)果,對緩存池中存儲的元素進(jìn)行清理,丟棄排序結(jié)果中排序在從低至高位上的指定數(shù)量的元素。一種較佳的實現(xiàn)方式,可以根據(jù)上述第一種方法得到的排序結(jié)果,在經(jīng)過排序后得到的隊列中,從低位至高位依次丟棄指定數(shù)量的元素。即從隊尾開始,依次丟棄指定數(shù)量的元素,這樣可以較好地節(jié)省系統(tǒng)的處理資源,隊列中剩余的各元素不需要進(jìn)行移動。根據(jù)上述第二種方法得到的排序結(jié)果,對緩存池中的各個元素進(jìn)行清理,丟棄排序結(jié)果中排序在從高至低位上的指定數(shù)量的元素。一種較佳的實現(xiàn)方式,可以根據(jù)上述第二種方法得到的排序結(jié)果,在經(jīng)過排序后得到的隊列中,從隊頭開始,依次丟棄指定數(shù)量的元素,然后將隊列中剩余的元素依次向前移動。需要指出的是,本申請上述提出的根據(jù)排序結(jié)果,按照指定的規(guī)則丟應(yīng)緩存池中相應(yīng)數(shù)量的元素,實際應(yīng)用中可以根據(jù)需要進(jìn)行設(shè)置,只要保證丟棄的元素對應(yīng)的重要度信息較低即可。實施例二相應(yīng)地,為了實現(xiàn)上述實施例一中闡述的數(shù)據(jù)緩存的方法,本申請實施例二這里提出一種數(shù)據(jù)緩存的裝置,如圖4所示,包括:重要度信息維護(hù)單元401,用于根據(jù)緩存池中每次新加入元素的情況和緩存池中已加入元素被訪問的命中次數(shù),為緩存池中的每個元素分別維護(hù)重要度信息。具體地,上述重要度信息維護(hù)單元401,具體用于當(dāng)有新元素加入到所述緩存池中時,設(shè)置一個默認(rèn)值作為該新加入元素的重要度信息,并將為緩存池中除該新加入的元素之外的每個元素分別維護(hù)的重要度信息,更新為原重要度信息減去一個第一預(yù)設(shè)值;以及當(dāng)所述緩存池中的一個元素被訪問命中時,將為該被訪問命中的元素維護(hù)的重要度信息,更新為原重要度信息加上一個第二預(yù)設(shè)值。排序單元402,用于根據(jù)重要度信息維護(hù)單元401分別為緩存池中的每個元素分別維護(hù)的重要度信息,按照預(yù)設(shè)的規(guī)則對緩存池中的各個元素進(jìn)行排序。緩存池清理單元403,用于在每次需要對緩存池中的元素進(jìn)行清理時,參照排序單元402為緩存池中各個元素的排序結(jié)果,對所述緩存池中存儲的元素進(jìn)行清理。具體地,上述緩存池清理單元403,具體用于在所述緩存池中已被占用的存儲容量大于預(yù)設(shè)的第一閾值或者在所述緩存池中已被占用的存儲容量大于預(yù)設(shè)的第二閾值且有新元素加入該緩存池時,確定需要對所述緩存池中存儲的元素進(jìn)行清理。具體地,上述排序單元402,具體用于根據(jù)重要度信息維護(hù)單元401分別為緩存池中的每個元素分別維護(hù)的重要度信息從大到小的順序,對緩存池中的元素進(jìn)行排序;上述緩存池清理單元403,具體用于在排序單元得到的排序結(jié)果中,丟棄排序在從低至高位上的指定數(shù)量的元素。具體地,上述排序單元402,具體用于根據(jù)重要度信息維護(hù)單元分別為緩存池中的每個元素分別維護(hù)的重要度信息從小到大的順序,對緩存池中的元素進(jìn)行排序;上述緩存池清理單元403,具體用于在排序單元得到的排序結(jié)果中,丟棄排序在從高至低位上的指定數(shù)量的元素。應(yīng)當(dāng)理解,以上裝置包括的單元僅為根據(jù)該裝置實現(xiàn)的功能進(jìn)行的邏輯劃分,實際應(yīng)用中,可以進(jìn)行上述單元的疊加或拆分。并且本申請實施例二提供的裝置所實現(xiàn)的功能與上述實施例一提供的數(shù)據(jù)緩存的方法流程一一對應(yīng),對于該裝置所實現(xiàn)的更為詳細(xì)的處理流程,在上述方法實施例中已做詳細(xì)描述,此處不再詳細(xì)描述。實施例三進(jìn)一步地,本申請實施例三這里以用戶終端訪問網(wǎng)站的過程為例,來對本申請實施例中提出的數(shù) 據(jù)緩存的方法進(jìn)一步詳細(xì)闡述。如圖5所示,具體流程如下:步驟501,記錄緩存池中已經(jīng)存儲的元素被訪問的命中次數(shù),以及記錄緩存池中每次新加入元素的情況,根據(jù)記錄的緩存池中每次新加入元素的情況和緩存池中已加入元素被訪問的命中次數(shù),為緩存池中的每個元素分別維護(hù)重要度信息。假設(shè)緩存池中現(xiàn)共存儲有5個元素Kl......K5,對應(yīng)5個元素的重要度信息分別為Wl......W5。步驟502,接收用戶終端發(fā)來的訪問請求,在訪問請求中包括用戶終端需要訪問的數(shù)據(jù)信息。步驟503,查找緩存池中是否存儲有與該用戶終端所需訪問的數(shù)據(jù)對應(yīng)的元素,如果存在,執(zhí)行步驟504,如果不存在,則執(zhí)行步驟505。步驟504,將緩存池中存儲的用戶終端需要訪問的元素提供給用戶終端,并更新為該元素維護(hù)的重要度信息,即將與該元素對應(yīng)的重要度信息加上一個預(yù)設(shè)值,較佳地,本申請實施例這里將該預(yù)設(shè)值設(shè)置為η (η為緩存池中當(dāng)前元素總數(shù))。例如,假設(shè)與該元素對應(yīng)的原重要度信息為5,且當(dāng)前緩存池中已經(jīng)存儲的元素的總數(shù)量為5,則由于該元素被用戶終端訪問命中,所以將該元素維護(hù)的重要度信息更新為5+5 = 10。步驟505,緩存池中沒有存儲與該用戶終端需要訪問的數(shù)據(jù)對應(yīng)的元素,則從數(shù)據(jù)庫中獲得該用戶終端所需的數(shù)據(jù)。步驟506,更新緩存池中已經(jīng)存儲的各元素對應(yīng)的重要度信息,然后將步驟505中獲得的數(shù)據(jù)加載到緩存池中,并為該元素維護(hù)一個重要度信息。本申請實施例三這里將新加入緩存池的元素的重要度信息設(shè)置為0,假設(shè)該緩存
池中存儲有5個元素,分別是Kl......K5,對應(yīng)的重要度信息分別為Wl......W5,新加入的
元素為K6,則設(shè)置與K6對應(yīng)的重要度信息為W6 = O,并將元素Kl......K5的重要度信息
更新為 Wl_l,W2_l......W5_l。由于緩存池的存儲空間是有限的,一種較佳地實施方式,將緩存池中存儲的各元素,按照為各元素維護(hù)的重要度信息從大到小的順序進(jìn)行排列,這樣,在緩存儲池的存儲空間達(dá)到預(yù)先設(shè)定的閾值時,可以刪除排序在后的、重要度信息較小的元素,排序在前的(重要度信息較大的)元素不需要再重新進(jìn)行移動,能夠較好地節(jié)省系統(tǒng)的處理資源。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD_R0M、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機(jī)程序 指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。盡管已描述了本申請的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。顯然,本領(lǐng)域的技術(shù)人員可以對本申請進(jìn)行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)緩存的方法,其特征在于,包括: 根據(jù)緩存池中每次新加入元素的情況和緩存池中已加入元素被訪問的命中次數(shù),為緩存池中的每個元素分別維護(hù)重要度信息; 在每次需要對緩存池中的元素進(jìn)行清理時,參照緩存池中各個元素的排序結(jié)果,對所述緩存池中存儲的元素進(jìn)行清理,其中,所述排序結(jié)果為根據(jù)分別為緩存池中的每個元素分別維護(hù)的重要度信息,按照預(yù)設(shè)的規(guī)則對緩存池中的各個元素進(jìn)行排序得到的。
2.如權(quán)利要求1所述的方法,其特征在于,在所述緩存池中已被占用的存儲容量大于預(yù)設(shè)的第一閾值或者在所述緩存池中已被占用的存儲容量大于預(yù)設(shè)的第二閾值且有新元素加入該緩存池時,確定需要對所述緩存池中存儲的元素進(jìn)行清理。
3.如權(quán)利要求1所述的方法,其特征在于,根據(jù)緩存池中每次新加入元素的情況和緩存池中已加入元素被訪問的命中次數(shù),為緩存池中的每個元素分別維護(hù)重要度信息,包括: 當(dāng)有新元素加入到所述緩存池中時,設(shè)置一個默認(rèn)值作為該新加入元素的重要度信息,并將為緩存池中除該新加入的元素之外的每個元素分別維護(hù)的重要度信息,更新為原重要度信息減去一個第一預(yù)設(shè)值; 當(dāng)所述緩存池中的一個元素被訪問命中時,將為該被訪問命中的元素維護(hù)的重要度信息,更新為原重要度信息加上一個第二預(yù)設(shè)值。
4.如權(quán)利要求3所述的方法,其特征在于,所述第一預(yù)設(shè)值小于第二預(yù)設(shè)值。
5.如權(quán)利要求1所 述的方法,其特征在于,按照預(yù)設(shè)的規(guī)則對緩存池中的各個元素進(jìn)行排序,包括: 根據(jù)分別為緩存池中的每個元素分別維護(hù)的重要度信息從大到小的順序,對緩存池中的元素進(jìn)行排序; 對所述緩存池中存儲的元素進(jìn)行清理,具體包括: 丟棄排序結(jié)果中排序在從低至高位上的指定數(shù)量的元素; 或者; 按照預(yù)設(shè)的規(guī)則對緩存池中的各個元素進(jìn)行排序,包括: 根據(jù)分別為緩存池中的每個元素分別維護(hù)的重要度信息從小到大的順序,對緩存池中的元素進(jìn)行排序; 對所述緩存池中存儲的元素進(jìn)行清理,具體包括: 丟棄排序結(jié)果中排序在從高至低位上的指定數(shù)量的元素。
6.一種數(shù)據(jù)緩存的裝置,其特征在于,包括: 重要度信息維護(hù)單元,用于根據(jù)緩存池中每次新加入元素的情況和緩存池中已加入元素被訪問的命中次數(shù),為緩存池中的每個元素分別維護(hù)重要度信息; 排序單元,用于在每次需要對緩存池中的元素進(jìn)行清理時,根據(jù)重要度信息維護(hù)單元分別為緩存池中的每個元素分別維護(hù)的重要度信息,按照預(yù)設(shè)的規(guī)則對緩存池中的各個元素進(jìn)行排序; 緩存池清理單元,用于在每次需要對緩存池中的元素進(jìn)行清理時,參照排序單元為緩存池中各個元素的排序結(jié)果,對所述緩存池中存儲的元素進(jìn)行清理。
7.如權(quán)利要求6所述的裝置,其特征在于,所述緩存池清理單元,具體用于在所述緩存池中已被占用的存儲容量大于預(yù)設(shè)的第一閾值或者在所述緩存池中已被占用的存儲容量大于預(yù)設(shè)的第二閾值且有新元素加入該緩存池時,確定需要對所述緩存池中存儲的元素進(jìn)行清理。
8.如權(quán)利要求6所述的裝置,其特征在于,所述重要度信息維護(hù)單元,具體用于當(dāng)有新元素加入到所述緩存池中時,設(shè)置一個默認(rèn)值作為該新加入元素的重要度信息,并將為緩存池中除該新加入的元素之外的每個元素分別維護(hù)的重要度信息,更新為原重要度信息減去一個第一預(yù)設(shè)值;以及當(dāng)所述緩存池中的一個元素被訪問命中時,將為該被訪問命中的元素維護(hù)的重要度信息,更新為原重要度信息加上一個第二預(yù)設(shè)值。
9.如權(quán)利要求6所述的裝置,其特征在于,所述排序單元,具體用于根據(jù)重要度信息維護(hù)單元分別為緩存池中的每個元素分別維護(hù)的重要度信息從大到小的順序,對緩存池中的元素進(jìn)行排序; 所述緩存池清理單元,具體用于在排序單元得到的排序結(jié)果中,丟棄排序在從低至高位上的指定數(shù)量的元素。
10.如權(quán)利要求6所述的裝置,其特征在于,所述排序單元,具體用于根據(jù)重要度信息維護(hù)單元分別為緩存池中的每個元素分別維護(hù)的重要度信息從小到大的順序,對緩存池中的元素進(jìn)行排序; 所述緩存池清理單元,具體用于在排序單元得到的排序結(jié)果中,丟棄排序在從高至低位上的指定數(shù)量的元素?!?br>
全文摘要
本申請公開了一種數(shù)據(jù)緩存的方法及裝置,包括根據(jù)緩存池中每次新加入元素的情況和緩存池中已加入元素被訪問的命中次數(shù),為緩存池中的每個元素分別維護(hù)重要度信息;在每次需要對緩存池中的元素進(jìn)行清理時,參照緩存池中各個元素的排序結(jié)果,對所述緩存池中存儲的元素進(jìn)行清理,其中,所述排序結(jié)果為根據(jù)分別為緩存池中的每個元素分別維護(hù)的重要度信息,按照預(yù)設(shè)的規(guī)則對緩存池中的各個元素進(jìn)行排序得到的。采用本申請?zhí)岢龅募夹g(shù)方案,能夠較好地提高基于WEB系統(tǒng)的客戶端在進(jìn)行數(shù)據(jù)緩存時的靈活性,以及在占用系統(tǒng)資源低的情況下實現(xiàn)數(shù)據(jù)被訪問時的高命中率,從而改善系統(tǒng)的性能。
文檔編號G06F12/08GK103246612SQ201210031748
公開日2013年8月14日 申請日期2012年2月13日 優(yōu)先權(quán)日2012年2月13日
發(fā)明者殷琳君, 殷俊杰 申請人:阿里巴巴集團(tuán)控股有限公司