亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種本地數(shù)據(jù)緩存管理方法及裝置制造方法

文檔序號:6526012閱讀:182來源:國知局
一種本地數(shù)據(jù)緩存管理方法及裝置制造方法
【專利摘要】本發(fā)明適用于計(jì)算機(jī)緩存管理【技術(shù)領(lǐng)域】,提供了一種本地數(shù)據(jù)緩存管理方法及裝置,所述方法包括:從內(nèi)存中分配連續(xù)的大塊內(nèi)存,并將所述大塊內(nèi)存空間劃分為空間大小相等的若干個小單元,使指針指向第一個空閑小單元;有小于所述小單元大小空間的數(shù)據(jù)需要緩存時,將所述數(shù)據(jù)填充至所述指針指向的空閑小單元,然后將所述指針指向下一個空閑小單元;根據(jù)所述數(shù)據(jù)中關(guān)鍵字和關(guān)鍵字的長度,獲取索引,根據(jù)所述索引,將所述數(shù)據(jù)的地址加入單向鏈表,并將所述單向鏈表的頭指針插入哈希表。本發(fā)明,借鑒Memcached分配一個連續(xù)內(nèi)存空間,使用固定大小的小單元作為最小緩存單元,使用哈希表保存數(shù)據(jù)地址的鏈表,方便靈活、快速存取數(shù)據(jù),緩存性能高。
【專利說明】一種本地數(shù)據(jù)緩存管理方法及裝置【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)緩存管理【技術(shù)領(lǐng)域】,尤其涉及一種本地數(shù)據(jù)緩存管理方法及裝置。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)的飛速發(fā)展,對CPU存取數(shù)據(jù)的速度要求越來越高,相應(yīng)的,各種緩存技術(shù)相繼出現(xiàn)并廣泛應(yīng)用。
[0003]其中,Memcached是一個高性能的分布式內(nèi)存對象緩存系統(tǒng),用于動態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫負(fù)載。它通過在內(nèi)存中緩存數(shù)據(jù)和對象來減少讀取數(shù)據(jù)庫的次數(shù),從而提高數(shù)據(jù)庫驅(qū)動網(wǎng)站的速度,同時,Memcached考慮了分布性、集群、數(shù)據(jù)網(wǎng)絡(luò)傳輸這些因素,設(shè)計(jì)了相應(yīng)的內(nèi)存管理方式以及數(shù)據(jù)結(jié)構(gòu),采用內(nèi)存連續(xù)分配、SLAB內(nèi)存管理方式、哈希算法尋找以及近期最少使用算法(Least Recently Used,LRU)等方法,以空間換時間,獲得了高性能存取,穩(wěn)定性高,另外由于Memcached為開源項(xiàng)目,可發(fā)展性好。
[0004]另一方面,當(dāng)前的本地緩存管理方法雖然多種多樣,但是這些本地緩存管理方法的存取性能、穩(wěn)定性、可發(fā)展性都存在欠缺,另外,在保存關(guān)鍵字對應(yīng)的值時,都習(xí)慣采用一個關(guān)鍵字、一個值這種模式,實(shí)際中,經(jīng)常需要一個關(guān)鍵字對應(yīng)多種數(shù)據(jù)類型,因此,這樣關(guān)鍵字與其值一一對應(yīng)保存不夠靈活。
【發(fā)明內(nèi)容】

[0005]本發(fā)明實(shí)施例提供了一種本地數(shù)據(jù)緩存管理方法及裝置,旨在解決現(xiàn)有本地緩存管理方法的穩(wěn)定性、性能、可發(fā)展性存在的欠缺,以及關(guān)鍵字與其值一一對應(yīng)保存不夠靈活的問題。
[0006]一方面,提供一種本地數(shù)據(jù)緩存管理方法,所述方法包括:
[0007]從內(nèi)存中分配連續(xù)的大塊內(nèi)存,并將所述大塊內(nèi)存空間劃分為空間大小相等的若干個小單元,使指針指向第一個空閑小單元;
[0008]有小于所述小單元大小空間的數(shù)據(jù)需要緩存時,將所述數(shù)據(jù)填充至所述指針指向的空閑小單元,然后將所述指針指向下一個空閑小單元,所述數(shù)據(jù)為包括關(guān)鍵字、關(guān)鍵字的對應(yīng)值的指針、存在時間和其他標(biāo)識屬性的封裝結(jié)構(gòu)體;
[0009]根據(jù)所述數(shù)據(jù)中關(guān)鍵字和關(guān)鍵字的長度,獲取索引,根據(jù)所述索引,將所述數(shù)據(jù)的地址加入單向鏈表,并將所述單向鏈表的頭指針插入哈希表。
[0010]另一方面,提供一種本地數(shù)據(jù)緩存管理裝置,所述裝置包括:
[0011]分配單元,用于從內(nèi)存中分配連續(xù)的大塊內(nèi)存,并將所述大塊內(nèi)存空間劃分為空間大小相等的若干個小單元,使指針指向第一個空閑小單元;
[0012]存儲單元,用于有小于所述小單元大小空間的數(shù)據(jù)需要緩存時,將所述數(shù)據(jù)填充至所述指針指向的空閑小單元,然后將所述指針指向下一個空閑小單元,所述數(shù)據(jù)為包括關(guān)鍵字、關(guān)鍵字的對應(yīng)值的指針、存在時間和其他標(biāo)識屬性的封裝結(jié)構(gòu)體;[0013]索引單元,用于根據(jù)所述數(shù)據(jù)中關(guān)鍵字和關(guān)鍵字的長度,獲取索引,根據(jù)所述索弓丨,將所述數(shù)據(jù)的地址加入單向鏈表,并將所述單向鏈表的頭指針插入哈希表。
[0014]在本發(fā)明實(shí)施例,從內(nèi)存中分配連續(xù)的大塊內(nèi)存,并將所述大塊內(nèi)存空間劃分為空間大小相等的若干個小單元,使指針指向第一個空閑小單元;有小于所述小單元大小空間的數(shù)據(jù)需要緩存時,將所述數(shù)據(jù)填充至所述指針指向的空閑小單元,然后將所述指針指向下一個空閑小單元;根據(jù)所述數(shù)據(jù)中關(guān)鍵字和關(guān)鍵字的長度,獲取索引,根據(jù)所述索引,將所述數(shù)據(jù)的地址加入單向鏈表,并將所述單向鏈表的頭指針插入哈希表,本發(fā)明,借鑒Memcached分配一個連續(xù)內(nèi)存空間,使用固定大小的小單元作為最小緩存單元,使用哈希表保存數(shù)據(jù)地址的鏈表,方便靈活、快速存取數(shù)據(jù),緩存性能高、穩(wěn)定性和可發(fā)展性好。相對于Memcached,本實(shí)施例只在單一服務(wù)器上運(yùn)行,分配較少緩存,無需考慮分布性及集群,無需考慮數(shù)據(jù)傳輸,簡單精巧,并且數(shù)據(jù)存取快速高效。
【專利附圖】

【附圖說明】
[0015]圖1是本發(fā)明實(shí)施例一提供的本地數(shù)據(jù)緩存管理方法的實(shí)現(xiàn)流程圖;
[0016]圖2是圖1的數(shù)據(jù)存儲示意圖;
[0017]圖3是本發(fā)明實(shí)施例二提供的本地數(shù)據(jù)緩存管理方法的實(shí)現(xiàn)流程圖;
[0018]圖4是本發(fā)明實(shí)施例三提供的本地數(shù)據(jù)緩存管理裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0019]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0020]以下結(jié)合具體實(shí)施例對本發(fā)明的實(shí)現(xiàn)進(jìn)行詳細(xì)描述:
[0021]實(shí)施例一
[0022]圖1示出了本發(fā)明實(shí)施例一提供的本地數(shù)據(jù)緩存管理方法的實(shí)現(xiàn)流程,詳述如下:
[0023]需要說明的是,本發(fā)明尤其適用于在單臺服務(wù)器上運(yùn)行,內(nèi)存空間極為有限的情況下。
[0024]在步驟SlOl中,從內(nèi)存中分配連續(xù)的大塊內(nèi)存,并將所述大塊內(nèi)存空間劃分為空間大小相等的若干個小單元,使指針指向第一個空閑小單元。
[0025]在本實(shí)施例中,所述大塊內(nèi)存為內(nèi)存中分配的一個連續(xù)的內(nèi)存空間,其大小根據(jù)服務(wù)器環(huán)境來設(shè)定,服務(wù)器內(nèi)存越大,大塊內(nèi)存也可以越大。優(yōu)選的,大塊內(nèi)存的大小范圍為l-10Mb。大塊內(nèi)存相當(dāng)于Memcached中的slab。所述小單元為若干個大小相等的組成所述大塊內(nèi)存的子內(nèi)存空間,緩存數(shù)據(jù)的大小不能超出小單元的大小。優(yōu)選的,所述小單元的大小為200bytes。小單元相當(dāng)于Memcached中的chunk。所述大塊內(nèi)存和所述小單元的大小配置可靈活設(shè)定。從內(nèi)存中分配連續(xù)的大塊內(nèi)存,并將所述大塊內(nèi)存空間劃分為長度相等的若干個小單元,使指針指向第一個空閑小單元。如圖2所示,將一個大塊內(nèi)存劃分為大小相等的若干個小單元。該內(nèi)存管理方法借鑒了 Memcached的SALB內(nèi)存管理方法,同時考慮到了單臺服務(wù)器內(nèi)存空間有限的情況,只申請一個大塊內(nèi)存。[0026]在步驟S102中,有小于所述小單元大小空間的數(shù)據(jù)需要緩存時,將所述數(shù)據(jù)填充至所述指針指向的空閑小單元,然后將所述指針指向下一個空閑小單元,所述數(shù)據(jù)為包括關(guān)鍵字、關(guān)鍵字的對應(yīng)值的指針、存在時間和其他標(biāo)識屬性的封裝結(jié)構(gòu)體。
[0027]在本實(shí)施例中,所述空閑小單元為沒有填充數(shù)據(jù)的小單元。所述數(shù)據(jù)為包括關(guān)鍵字、關(guān)鍵字的值的指針、存在時間和其他標(biāo)識屬性的封裝結(jié)構(gòu)體。將所述數(shù)據(jù)填充至所述指針指向的空閑小單元,將所述指針指向下一個空閑小單元。所述數(shù)據(jù)的地址插入LRU隊(duì)列。該隊(duì)列采用近期最少使用算法(Least Recently Used,LRU)或根據(jù)數(shù)據(jù)的生命周期來淘汰很久不使用的數(shù)據(jù)。
[0028]作為一個優(yōu)選方案,本步驟之前還可以包括以下步驟:
[0029]步驟11,計(jì)算所述數(shù)據(jù)的長度,若所述數(shù)據(jù)的空間大小大于所述小單元的空間大小,不保存所述數(shù)據(jù)。
[0030]具體的,由于小單元空間大小固定,再通過控制緩存數(shù)據(jù)需要的空間大小,可排除數(shù)據(jù)溢出引起的異常。
[0031]步驟12,若所述數(shù)據(jù)的空間大小小于所述小單元的空間大小,判斷所述大塊內(nèi)存中空閑小單元的數(shù)量為O或所述小單元的使用率達(dá)到閥值時,淘汰所述數(shù)據(jù)。
[0032]具體的,所述閥值為90%。在大塊內(nèi)存被完全使用或者使用率達(dá)到90%時,需要淘汰一些太久沒有使用或者生命周期已經(jīng)結(jié)束的數(shù)據(jù),然后回收清空的小單元以便于再次使用。優(yōu)選的,所述淘汰所述數(shù)據(jù)包括以下兩種方式的任一種:
[0033]第一種方式,根據(jù)LRU算法,獲取需要淘汰的所述數(shù)據(jù)的地址,清空保存所述地址對應(yīng)的小單元中所述數(shù)據(jù)。
[0034]第二種方式,根據(jù)所述數(shù)據(jù)中存在時間,計(jì)算所述數(shù)據(jù)的生命周期,淘汰所述生命周期結(jié)束的所述數(shù)據(jù)。
[0035]在步驟S103中,根據(jù)所述數(shù)據(jù)中關(guān)鍵字和關(guān)鍵字的長度,獲取索引,根據(jù)所述索弓丨,將所述數(shù)據(jù)的地址加入單向鏈表,并將所述單向鏈表的頭指針插入哈希表。
[0036]在本實(shí)施例中,所述哈希表為含有多個指針的數(shù)組,每個指針都指向一個單向鏈表的頭指針。根據(jù)所述數(shù)據(jù)中關(guān)鍵字和關(guān)鍵字的長度,獲取索引,根據(jù)所述索引,將所述數(shù)據(jù)的地址加入單向鏈表,并將所述單向鏈表的頭指針插入哈希表。如圖2所示,單向鏈表的頭指針逐一插入哈希表。獲取關(guān)鍵字對應(yīng)值的時候,可以快速查找對應(yīng)鏈表,因?yàn)檫@樣的鏈表中的數(shù)據(jù)個數(shù)相對來說就少多了。當(dāng)數(shù)據(jù)越多,哈希查找的效果越能體現(xiàn)出來了,由于具體的關(guān)鍵字值通過哈希算法得到對應(yīng)的索引,提高了查找效率。
[0037]本步驟之后,作為一個優(yōu)選方案,還包括讀取時,根據(jù)哈希算法,得到索引,查詢所述索引對應(yīng)的單向鏈表,從所述單向鏈表中所述地址對應(yīng)的所述小單元中讀取所述數(shù)據(jù)。
[0038]具體的,由于采用哈希算法,可以快速查詢并讀取所述數(shù)據(jù)。
[0039]本實(shí)施例,借鑒Memcached分配一個連續(xù)內(nèi)存空間,使用固定大小的小單元作為最小緩存單元,使用哈希表保存數(shù)據(jù)地址的鏈表,方便靈活、快速存取數(shù)據(jù),緩存性能高、穩(wěn)定性和可發(fā)展性好。相對于Memcached,本實(shí)施例只在單一服務(wù)器上運(yùn)行,分配較少緩存,無需考慮分布性及集群,無需考慮數(shù)據(jù)傳輸,簡單精巧,并且數(shù)據(jù)存取快速高效。
[0040]實(shí)施例二
[0041]圖3示出了本發(fā)明實(shí)施例二提供的本地數(shù)據(jù)緩存管理方法的實(shí)現(xiàn)流程,詳述如下:
[0042]在步驟S301中,從內(nèi)存中分配連續(xù)的大塊內(nèi)存,并將所述大塊內(nèi)存空間劃分為空間大小相等的若干個小單元,使指針指向第一個空閑小單元。
[0043]在本實(shí)施例中,步驟S201的執(zhí)行和上述實(shí)施例一中的步驟SlOl的執(zhí)行過程類似,詳情參見上述實(shí)施例一的描述。
[0044]在步驟S302中,通過變參函數(shù),接收或讀取所述數(shù)據(jù)。
[0045]具體的,由于大塊內(nèi)存是申請的可控的,每個小單元的邊界也清楚,當(dāng)知道數(shù)據(jù)類型的時候,也就知道了其在內(nèi)存空間占據(jù)的位置和大小,依據(jù)參數(shù)的先后順序、數(shù)據(jù)類型、數(shù)據(jù)個數(shù),第一個參數(shù)保存時候的起始地址,自然能讀寫它們的值。如通過函數(shù)
[0046]set (char氺value, int total,typelvaluel, type2value2, type3value3);或set (char*value, int total,...);
[0047]來接收所述數(shù)據(jù),相應(yīng)的,通過函數(shù):
[0048]get (char*value, int total,…)來讀取所述數(shù)據(jù),其中,value為關(guān)鍵字對應(yīng)的值的數(shù)據(jù)。
[0049]在步驟S303中,有小于所述小單元大小空間的數(shù)據(jù)需要緩存時,將所述數(shù)據(jù)填充至所述指針指向的空閑小單元,然后將所述指針指向下一個空閑小單元,所述數(shù)據(jù)為包括關(guān)鍵字、關(guān)鍵字的對應(yīng)值的指針、存在時間和其他標(biāo)識屬性的封裝結(jié)構(gòu)體。
[0050]在步驟S304中,根據(jù)所述數(shù)據(jù)中關(guān)鍵字和關(guān)鍵字的長度,獲取索引,根據(jù)所述索弓丨,將所述數(shù)據(jù)的地址加入單向鏈表,并將所述單向鏈的表頭指針插入哈希表。
[0051]在本實(shí)施例中,步驟S303-S30`4的執(zhí)行和上述實(shí)施例一中的步驟S102-S103的執(zhí)行過程類似,詳情參見上述實(shí)施例一的描述。
[0052]本實(shí)施例,借鑒Memcached分配一個連續(xù)內(nèi)存空間,使用固定大小的小單元作為最小緩存單元,使用哈希表保存數(shù)據(jù)地址的鏈表,方便靈活、快速存取數(shù)據(jù),緩存性能高,實(shí)現(xiàn)了關(guān)鍵字與其值一對多靈活保存。相對于Memcached,本實(shí)施例只在單一服務(wù)器上運(yùn)行,分配較少緩存,無需考慮分布性及集群,無需考慮數(shù)據(jù)傳輸,簡單精巧,并且數(shù)據(jù)存取快速聞效。
[0053]實(shí)施例三
[0054]圖4示出了本發(fā)明實(shí)施例三提供的本地數(shù)據(jù)緩存管理裝置的具體結(jié)構(gòu)框圖,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。在本實(shí)施例中,該本地數(shù)據(jù)緩存管理裝置包括:分配單元41、存儲單元42、索引單元43、淘汰單元44、空間計(jì)算單元45、判斷單元46、讀取單元47和接口單元48。
[0055]其中,分配單元41,用于從內(nèi)存中分配連續(xù)的大塊內(nèi)存,并將所述大塊內(nèi)存空間劃分為空間大小相等的若干個小單元,使指針指向第一個空閑小單元;
[0056]存儲單元42,用于有小于所述小單元大小空間的數(shù)據(jù)需要緩存時,將所述數(shù)據(jù)填充至所述指針指向的空閑小單元,然后將所述指針指向下一個空閑小單元,所述數(shù)據(jù)為包括關(guān)鍵字、關(guān)鍵字的對應(yīng)值的指針、存在時間和其他標(biāo)識屬性的封裝結(jié)構(gòu)體;
[0057]索引單元43,用于根據(jù)所述數(shù)據(jù)中關(guān)鍵字和關(guān)鍵字的長度,獲取索引,根據(jù)所述索弓丨,將所述數(shù)據(jù)的地址加入單向鏈表,并將所述單向鏈表的頭指針插入哈希表。
[0058]該裝置借鑒Memcached分配一個連續(xù)內(nèi)存空間,使用固定大小的小單元作為最小緩存單元,使用哈希表保存數(shù)據(jù)地址的鏈表,方便靈活、快速存取數(shù)據(jù),緩存性能高。相對于Memcached,本實(shí)施例只在單一服務(wù)器上運(yùn)行,分配較少緩存,無需考慮分布性及集群,無需考慮數(shù)據(jù)傳輸,簡單精巧,并且數(shù)據(jù)存取快速高效。
[0059]進(jìn)一步的,所述裝置還包括:
[0060]淘汰單元44,用于將所述數(shù)據(jù)的地址插入LRU隊(duì)列。
[0061]進(jìn)一步的,所述裝置還包括:
[0062]空間計(jì)算單元45,用于計(jì)算所述數(shù)據(jù)的空間大小,若所述數(shù)據(jù)的空間大小大于所述小單元的空間大小,不保存所述數(shù)據(jù);
[0063]判斷單元46,用于若所述數(shù)據(jù)的空間大小小于所述小單元的空間大小,判斷所述大塊內(nèi)存中空閑小單元的數(shù)量為O或所述小單元的使用率達(dá)到閥值時,淘汰所述數(shù)據(jù)。
[0064]進(jìn)一步的,所述判斷單元還具體用于根據(jù)LRU算法,獲取需要淘汰的所述數(shù)據(jù)的地址,清空保存所述地址對應(yīng)的小單元中所述數(shù)據(jù);或根據(jù)所述數(shù)據(jù)中存在時間,計(jì)算所述數(shù)據(jù)的生命周期,淘汰所述生命周期結(jié)束的所述數(shù)據(jù)。
[0065]進(jìn)一步的,所述裝置還包括:
[0066]讀取單元47,用于讀取時,根據(jù)哈希算法,得到索引,查詢所述索引對應(yīng)的單向鏈表,從所述單向鏈表中所述地址對應(yīng)的所述小單元中讀取所述數(shù)據(jù)。
[0067]進(jìn)一步的,所述裝置還包括:
[0068]接口單元48,用于通過變參函數(shù),設(shè)置或讀取所述數(shù)據(jù)。
[0069]該裝置實(shí)現(xiàn)了關(guān)鍵字與其值一對多靈活保存。
[0070]本發(fā)明實(shí)施例提供的本地數(shù)據(jù)緩存管理裝置可以應(yīng)用在前述對應(yīng)的方法實(shí)施例一和二中,詳情參見上述實(shí)施例一和二的描述,在此不再贅述。
[0071]值得注意的是,上述系統(tǒng)實(shí)施例中,所包括的各個單元只是按照功能邏輯進(jìn)行劃分的,但并不局限于上述的劃分,只要能夠?qū)崿F(xiàn)相應(yīng)的功能即可;另外,各功能單元的具體名稱也只是為了便于相互區(qū)分,并不用于限制本發(fā)明的保護(hù)范圍。
[0072]另外,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各實(shí)施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,相應(yīng)的程序可以緩存于一計(jì)算機(jī)可讀取緩存介質(zhì)中,所述的緩存介質(zhì),如R0M/RAM、磁盤或光盤等。
[0073]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種本地數(shù)據(jù)緩存管理方法,其特征在于,所述方法包括: 從內(nèi)存中分配連續(xù)的大塊內(nèi)存,并將所述大塊內(nèi)存空間劃分為空間大小相等的若干個小單元,使指針指向第一個空閑小單元; 有小于所述小單元大小空間的數(shù)據(jù)需要緩存時,將所述數(shù)據(jù)填充至所述指針指向的空閑小單元,然后將所述指針指向下一個空閑小單元,所述數(shù)據(jù)為包括關(guān)鍵字、關(guān)鍵字的對應(yīng)值的指針、存在時間和其他標(biāo)識屬性的封裝結(jié)構(gòu)體; 根據(jù)所述數(shù)據(jù)中關(guān)鍵字和關(guān)鍵字的長度,獲取索引,根據(jù)所述索引,將所述數(shù)據(jù)的地址加入單向鏈表,并將所述單向鏈表的頭指針插入哈希表。
2.如權(quán)利要求1所述的方法,其特征在于,所述有小于所述小單元的空間大小的數(shù)據(jù)需要緩存時,將所述數(shù)據(jù)填充至所述指針指向的空閑小單元,將所述指針指向下一個空閑小單元之后還包括: 將所述數(shù)據(jù)的地址插入LRU隊(duì)列。
3.如權(quán)利要求1所述的方法,其特征在于,所述有小于所述小單元的空間大小的數(shù)據(jù)需要緩存時,將所述數(shù)據(jù)填充至所述指針指向的第一個空閑小單元,將所述指針指向下一個空閑小單元之前還包括: 計(jì)算所述數(shù)據(jù)的空間大小,若所述數(shù)據(jù)的空間大小大于所述小單元的空間大小,不保存所述數(shù)據(jù); 若所述數(shù)據(jù)的空間大小小于所述小單元的空間大小,判斷所述大塊內(nèi)存中空閑小單元的數(shù)量為O或所述小單元的使用率達(dá)到閥值時,淘汰所述數(shù)據(jù)。
4.如權(quán)利要求3所述的`方法,其特征在于,所述淘汰所述數(shù)據(jù)具體為: 根據(jù)LRU算法,獲取需要淘汰的所述數(shù)據(jù)的地址,清空保存所述地址對應(yīng)的小單元中所述數(shù)據(jù);或 根據(jù)所述數(shù)據(jù)中存在時間,計(jì)算所述數(shù)據(jù)的生命周期,淘汰所述生命周期結(jié)束的所述數(shù)據(jù)。
5.如權(quán)利要求1、2、3或4所述的方法,其特征在于,所述方法還包括: 讀取時,根據(jù)哈希算法,得到索引,查詢所述索引對應(yīng)的單向鏈表,從所述單向鏈表中所述地址對應(yīng)的所述小單元中讀取所述數(shù)據(jù)。
6.如權(quán)利要求5所述的方法,其特征在于,所述方法還包括: 通過變參函數(shù),設(shè)置或讀取所述數(shù)據(jù)。
7.—種本地數(shù)據(jù)緩存管理裝置,其特征在于,所述裝置包括: 分配單元,用于從內(nèi)存中分配連續(xù)的大塊內(nèi)存,并將所述大塊內(nèi)存空間劃分為空間大小相等的若干個小單元,使指針指向第一個空閑小單元; 存儲單元,用于有小于所述小單元大小空間的數(shù)據(jù)需要緩存時,將所述數(shù)據(jù)填充至所述指針指向的空閑小單元,然后將所述指針指向下一個空閑小單元,所述數(shù)據(jù)為包括關(guān)鍵字、關(guān)鍵字的對應(yīng)值的指針、存在時間和其他標(biāo)識屬性的封裝結(jié)構(gòu)體; 索引單元,用于根據(jù)所述數(shù)據(jù)中關(guān)鍵字和關(guān)鍵字的長度,獲取索引,根據(jù)所述索引,將所述數(shù)據(jù)的地址加入單向鏈表,并將所述單向鏈表的頭指針插入哈希表。
8.如權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 淘汰單元,用于將所述數(shù)據(jù)的地址插入LRU隊(duì)列。
9.如權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 空間計(jì)算單元,用于計(jì)算所述數(shù)據(jù)的空間大小,若所述數(shù)據(jù)的空間大小大于所述小單元的空間大小,不保存所述數(shù)據(jù); 判斷單元,用于若所述數(shù)據(jù)的空間大小小于所述小單元的空間大小,判斷所述大塊內(nèi)存中空閑小單元的數(shù)量為O或所述小單元的使用率達(dá)到閥值時,淘汰所述數(shù)據(jù)。
10.如權(quán)利要求9所述的裝置,其特征在于,所述判斷單元還具體用于根據(jù)LRU算法,獲取需要淘汰的所述數(shù)據(jù)的地址,清空保存所述地址對應(yīng)的小單元中所述數(shù)據(jù);或根據(jù)所述數(shù)據(jù)中存在時間,計(jì)算所述數(shù)據(jù)的生命周期,淘汰所述生命周期結(jié)束的所述數(shù)據(jù)。
11.如權(quán)利要求7、8、9或10所述的裝置,其特征在于,所述裝置還包括: 讀取單元,用于讀取時,根據(jù)哈希算法,得到索引,查詢所述索引對應(yīng)的單向鏈表,從所述單向鏈表中所述地址對應(yīng)的所述小單元中讀取所述數(shù)據(jù)。
12.如權(quán)利要求11所述的裝置,其特征在于,所述裝置還包括: 接口單元,用于通過變參函數(shù),設(shè)置`或讀取所述數(shù)據(jù)。
【文檔編號】G06F12/08GK103678172SQ201310737249
【公開日】2014年3月26日 申請日期:2013年12月25日 優(yōu)先權(quán)日:2013年12月25日
【發(fā)明者】譚蘭春 申請人:Tcl集團(tuán)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1