一種大容量緩存及其快速檢索方法、構(gòu)建方法
【專利摘要】本發(fā)明公開了一種大容量緩存及其快速檢索方法、構(gòu)建方法,涉及數(shù)據(jù)檢索領(lǐng)域。該大容量緩存的數(shù)據(jù)結(jié)構(gòu)包括鏈表和radix tree;數(shù)據(jù)保存在所述鏈表中,所述鏈表設(shè)置于所述radix tree的葉子節(jié)點上;所述數(shù)據(jù)的key包括第一key和第二key,所述第一key用于檢索所述radix tree,查找所述key對應(yīng)的所述鏈表;所述第二key用于檢索所述key對應(yīng)的所述鏈表,查找所述數(shù)據(jù)。采用上述技術(shù)方案,實現(xiàn)了在處理大量數(shù)據(jù)的時候,既可以快速的檢索到數(shù)據(jù),又不需要創(chuàng)建大量的管理節(jié)點來管理葉子節(jié)點,節(jié)約了內(nèi)存空間,提高了內(nèi)存空間的利用率。
【專利說明】一種大容量緩存及其快速檢索方法、構(gòu)建方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)檢索領(lǐng)域,尤其涉及一種大容量緩存及其快速檢索方法、構(gòu)建方法。
【背景技術(shù)】
[0002]在處理大量數(shù)據(jù)時,數(shù)據(jù)的檢索時間是影響程序性能的一個重要因素。
[0003]目前,對于大量數(shù)據(jù)的檢索,一般利用“樹”這種數(shù)據(jù)結(jié)構(gòu),比如:red-black tree,radix tree 等。
[0004]radix tree是一種比較常用的樹,可以實現(xiàn)數(shù)據(jù)的有效存儲,并且可以實現(xiàn)數(shù)據(jù)的快速查詢。
[0005]但是,使用radix tree這種數(shù)據(jù)結(jié)構(gòu),實際數(shù)據(jù)都只能保存在葉子節(jié)點。在處理大量數(shù)據(jù)的時候,需要創(chuàng)建大量管理節(jié)點來管理葉子節(jié)點,會造成大量內(nèi)存空間的浪費。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提供一種大容量緩存及其快速檢索方法、構(gòu)建方法,從而解決現(xiàn)有技術(shù)中存在的前述問題。
[0007]為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
[0008]一種大容量緩存,所述大容量緩存的數(shù)據(jù)結(jié)構(gòu)包括鏈表和radix tree ;數(shù)據(jù)保存在所述鏈表中,所述鏈表設(shè)置于所述radix tree的葉子節(jié)點上;所述數(shù)據(jù)的key包括第一key和第二 key,所述第一 key用于檢索所述radix tree,查找所述key對應(yīng)的所述鏈表;所述第二 key用于檢索所述key對應(yīng)的所述鏈表,查找所述數(shù)據(jù)。
[0009]具體地,所述radix tree的節(jié)點槽數(shù)量設(shè)置為16?128,且所述radix tree的高度設(shè)置為3?8。
[0010]優(yōu)選地,所述radix tree的節(jié)點槽數(shù)量設(shè)置為64,且所述radix tree的高度設(shè)置為5。
[0011]上述大容量緩存的快速檢索方法,包括如下步驟:
[0012]S1,接收 key;
[0013]S2,根據(jù)第一 key檢索radix tree,查找所述key對應(yīng)的鏈表;如果沒有查找到所述key對應(yīng)的鏈表,則返回處理結(jié)果;如果查找到了所述key對應(yīng)的鏈表,則之行步驟S3 ;
[0014]S3,根據(jù)第二 key檢索所述key對應(yīng)的鏈表,查找所述key對應(yīng)的數(shù)據(jù);
[0015]S4,找到所述數(shù)據(jù)后,更新所述數(shù)據(jù)的訪問時間和訪問次數(shù);
[0016]S5,返回查找到的所述數(shù)據(jù)。
[0017]進一步地,在步驟S4和S5之間,還包括步驟,
[0018]根據(jù)所述數(shù)據(jù)的訪問時間和訪問次數(shù),判斷所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置是否需要調(diào)整,如果不需要調(diào)整,則執(zhí)行步驟S5 ;如果需要調(diào)整,則調(diào)整所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置。
[0019]其中,所述調(diào)整所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置,具體為,如果所述數(shù)據(jù)的訪問優(yōu)先級高于所述鏈表中的對比數(shù)據(jù)的訪問優(yōu)先級,則將所述數(shù)據(jù)移動到該對比數(shù)據(jù)的前面;如果所述數(shù)據(jù)的訪問優(yōu)先級低于所述鏈表中的對比數(shù)據(jù)的訪問優(yōu)先級,則將所述數(shù)據(jù)移動到該對比數(shù)據(jù)的后面。
[0020]上述大容量緩存的構(gòu)建方法,包括如下步驟:
[0021 ] S1,接收數(shù)據(jù)和key ;
[0022]S2,根據(jù)第一 key檢索radix tree,查找所述key對應(yīng)的鏈表;
[0023]S3,根據(jù)第二 key檢索所述key對應(yīng)的鏈表,查找所述key對應(yīng)的數(shù)據(jù);如果查找到了所述數(shù)據(jù),則放棄所述數(shù)據(jù)和key ;如果沒有查找到所述數(shù)據(jù),則執(zhí)行步驟S4-S5 ;
[0024]S4,將所述數(shù)據(jù)插入到所述key對應(yīng)的鏈表中;
[0025]S5,更新所述數(shù)據(jù)的訪問時間和訪問次數(shù)。
[0026]進一步地,步驟S5之后,還包括步驟,
[0027]根據(jù)所述數(shù)據(jù)的訪問時間和訪問次數(shù),判斷所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置是否需要調(diào)整,如果不需要調(diào)整,則結(jié)束;如果需要調(diào)整,則調(diào)整所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置。
[0028]其中,所述調(diào)整所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置,具體為,具體為,如果所述數(shù)據(jù)的訪問優(yōu)先級高于所述鏈表中的對比數(shù)據(jù)的訪問優(yōu)先級,則將所述數(shù)據(jù)移動到該對比數(shù)據(jù)的前面;如果所述數(shù)據(jù)的訪問優(yōu)先級低于所述鏈表中的對比數(shù)據(jù)的訪問優(yōu)先級,則將所述數(shù)據(jù)移動到該對比數(shù)據(jù)的后面。
[0029]本發(fā)明的有益效果是:
[0030]本發(fā)明結(jié)合了鏈表和radix tree這兩種數(shù)據(jù)結(jié)構(gòu)的特點,通過在radix tree的葉子節(jié)點上用鏈表來保存需要檢索的實際數(shù)據(jù),并將數(shù)據(jù)的key拆分成兩部分:第一部分用于檢索radix tree,找到key對應(yīng)的鏈表,第二部分用于檢索key對應(yīng)的鏈表,找到需要檢索的實際數(shù)據(jù)。從而實現(xiàn)了在處理大量數(shù)據(jù)的時候,既可以快速的檢索到數(shù)據(jù),又不需要創(chuàng)建大量的管理節(jié)點來管理葉子節(jié)點,節(jié)約了內(nèi)存空間,提高了內(nèi)存空間的利用率。
【專利附圖】
【附圖說明】
[0031]圖1是本發(fā)明實施例一提供的大容量緩存的結(jié)構(gòu)示意圖;
[0032]圖2是本發(fā)明實施例二提供的大容量緩存的快速檢索方法的流程圖;
[0033]圖3是本發(fā)明實施例三提供的大容量緩存的快速檢索方法的流程圖;
[0034]圖4是本發(fā)明實施例四提供的大容量緩存的構(gòu)建方法的流程圖;
[0035]圖5是本發(fā)明實施例五提供的大容量緩存的構(gòu)建方法的流程圖。
【具體實施方式】
[0036]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖,對本發(fā)明進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的【具體實施方式】僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0037]實施例一
[0038]如圖1所示,本發(fā)明實施例提供了一種大容量緩存,其數(shù)據(jù)結(jié)構(gòu)包括鏈表和radixtree ;數(shù)據(jù)保存在所述鏈表中,所述鏈表設(shè)置于所述radix tree的葉子節(jié)點上;所述數(shù)據(jù)的key包括第一 key和第二 key,所述第一 key用于檢索所述radix tree,查找所述key對應(yīng)的所述鏈表;所述第二 key用于檢索所述key對應(yīng)的所述鏈表,查找所述數(shù)據(jù)。
[0039]radix tree訪問速度快,但占用內(nèi)存比較多;鏈表訪問速度較慢,但占用內(nèi)存比較少。在本發(fā)明實施例中,通過采用技術(shù)方案:將數(shù)據(jù)保存在所述鏈表中,將所述鏈表設(shè)置于所述radix tree的葉子節(jié)點上,將radix tree和鏈表兩種數(shù)據(jù)結(jié)構(gòu)的優(yōu)點進行了巧妙的結(jié)合,實現(xiàn)了訪問速度比較快,且內(nèi)存占用比較小的目的。
[0040]其中,本發(fā)明實施例中,可以將radix tree的節(jié)點槽數(shù)量設(shè)置為16?128,且所述radix tree的高度設(shè)置為3?8。
[0041]將radix tree的節(jié)點槽數(shù)量和高度設(shè)置在此范圍內(nèi),既可以避免radix tree中大部分?jǐn)?shù)據(jù)的碰撞,同時又保障了較好的訪問速度和占用較少的內(nèi)存空間。
[0042]優(yōu)選的,可以將radix tree的節(jié)點槽數(shù)量設(shè)置為64,且所述radix tree的高度設(shè)置為5。
[0043]實施例二
[0044]如圖2所示,本發(fā)明實施例提供了一種上述實施例一提供的大容量緩存的快速檢索方法,該方法包括如下步驟:
[0045]S1,接收 key;
[0046]S2,根據(jù)第一 key檢索radix tree,查找所述key對應(yīng)的鏈表;
[0047]S3,根據(jù)第二 key檢索所述key對應(yīng)的鏈表,查找所述key對應(yīng)的數(shù)據(jù);如果沒有查找到所述數(shù)據(jù),則返回處理結(jié)果;如果查找到了所述數(shù)據(jù),則執(zhí)行步驟S4-S5 ;
[0048]S4,找到所述數(shù)據(jù)后,更新所述數(shù)據(jù)的訪問時間和訪問次數(shù);
[0049]S5,返回查找到的所述數(shù)據(jù)。
[0050]采用上述技術(shù)方案,在處理大量數(shù)據(jù)的時候,既可以快速的檢索到數(shù)據(jù),又不需要創(chuàng)建大量的管理節(jié)點來管理葉子節(jié)點,會大大的節(jié)省內(nèi)存空間,進而提高內(nèi)存的利用率。
[0051]實施例三
[0052]如圖3所示,本發(fā)明實施例中,包括實施例二提供的大容量緩存的快速檢索方法,另外,在步驟S4和S5之間,還可以包括步驟,
[0053]根據(jù)所述數(shù)據(jù)的訪問時間和訪問次數(shù),判斷所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置是否需要調(diào)整,如果不需要調(diào)整,則執(zhí)行步驟S5 ;如果需要調(diào)整,則調(diào)整所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置。
[0054]其中,所述調(diào)整所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置,具體可以為,如果所述數(shù)據(jù)的訪問優(yōu)先級高于所述鏈表中的對比數(shù)據(jù)的訪問優(yōu)先級,則將所述數(shù)據(jù)移動到該對比數(shù)據(jù)的前面;如果所述數(shù)據(jù)的訪問優(yōu)先級低于所述鏈表中的對比數(shù)據(jù)的訪問優(yōu)先級,則將所述數(shù)據(jù)移動到該對比數(shù)據(jù)的后面。
[0055]其中,數(shù)據(jù)的訪問優(yōu)先級可以按照如下方法進行確定:1小時內(nèi)最近訪問時間內(nèi)的訪問次數(shù)。假設(shè)總平均訪問次數(shù)為500次/小時,最近訪問時間占的權(quán)重是70 %,平均訪問次數(shù)占的權(quán)重是30%。比如:A數(shù)據(jù)最近訪問時間是10分鐘之前,1小時內(nèi)訪問次數(shù)是500次;B數(shù)據(jù)最近訪問時間是3分鐘之前,1小時內(nèi)訪問次數(shù)是400次,那么A的優(yōu)先級是(1-10/60) *0.7+0.3*500/500 = 0.88,B 的優(yōu)先級是(1-3/60) *0.7+0.3*400/500 = 0.91 所以B的優(yōu)先級要比A高,B就會被調(diào)整到A的前面。
[0056]采用上述技術(shù)方案,對于訪問頻次比較高的數(shù)據(jù),前移其在鏈表中的位置,則在檢索中就可以被快速的檢索到,從而提高檢索速度。與少量數(shù)據(jù)的處理相比,在大量的數(shù)據(jù)處理中,數(shù)據(jù)檢索的速度對程序性能的提高影響更大。數(shù)據(jù)檢索的速度越快,越能提高程序的性能,進而提聞內(nèi)存的利用率。
[0057]本發(fā)明實施例中,通過不斷的更新和判斷數(shù)據(jù)的訪問時間和訪問次數(shù),判斷是否要對數(shù)據(jù)的位置進行調(diào)整,實現(xiàn)了數(shù)據(jù)位置的不斷更新和調(diào)整,這對于大量的數(shù)據(jù),尤其是對于訪問頻次不斷發(fā)生變化的大量數(shù)據(jù)而言,具有非常重要的意義??梢允咕彺嬷性L問頻次高的數(shù)據(jù)始終處于鏈表的前面的位置處,始終具有高的檢索速度,進而使程序始終具有高的性能,而不會出現(xiàn)瓶頸期。
[0058]實施例四
[0059]如圖4所示,本發(fā)明實施例中,提供了一種實施例一提供的大容量緩存的構(gòu)建方法,該方法包括如下步驟:
[0060]S1,接收數(shù)據(jù)和key;
[0061]S2,根據(jù)第一 key檢索radix tree,查找所述key對應(yīng)的鏈表;
[0062]S3,根據(jù)第二 key檢索所述key對應(yīng)的鏈表,查找所述key對應(yīng)的數(shù)據(jù);如果沒有查找到所述數(shù)據(jù),則放棄所述數(shù)據(jù)和key ;如果查找到了所述數(shù)據(jù),則執(zhí)行步驟S4-S5 ;
[0063]S4,將所述數(shù)據(jù)插入到所述key對應(yīng)的鏈表中;
[0064]S5,更新所述數(shù)據(jù)的訪問時間和訪問次數(shù)。
[0065]采用上述技術(shù)方案,在處理大量數(shù)據(jù)的時候,既可以快速的檢索到數(shù)據(jù),又不需要創(chuàng)建大量的管理節(jié)點來管理葉子節(jié)點,會大大的節(jié)省內(nèi)存空間,進而提高內(nèi)存的利用率。
[0066]實施例五
[0067]如圖5所示,本發(fā)明實施例中,包括實施例四提供的大容量緩存的構(gòu)建方法,另夕卜,在步驟S5之后,還可以包括步驟,
[0068]根據(jù)所述數(shù)據(jù)的訪問時間和訪問次數(shù),判斷所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置是否需要調(diào)整,如果不需要調(diào)整,則結(jié)束;如果需要調(diào)整,則調(diào)整所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置。
[0069]其中,調(diào)整所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置,具體可以為,如果所述數(shù)據(jù)的訪問優(yōu)先級高于所述鏈表中的對比數(shù)據(jù)的訪問優(yōu)先級,則將所述數(shù)據(jù)移動到該對比數(shù)據(jù)的前面;如果所述數(shù)據(jù)的訪問優(yōu)先級低于所述鏈表中的對比數(shù)據(jù)的訪問優(yōu)先級,則將所述數(shù)據(jù)移動到該對比數(shù)據(jù)的后面。
[0070]其中,數(shù)據(jù)的訪問優(yōu)先級可以按照如下方法進行確定:1小時內(nèi)最近訪問時間內(nèi)的訪問次數(shù)。假設(shè)總平均訪問次數(shù)為500次/小時,最近訪問時間占的權(quán)重是70 %,平均訪問次數(shù)占的權(quán)重是30%。比如:A數(shù)據(jù)最近訪問時間是10分鐘之前,1小時內(nèi)訪問次數(shù)是500次;B數(shù)據(jù)最近訪問時間是3分鐘之前,1小時內(nèi)訪問次數(shù)是400次,那么A的優(yōu)先級是(1-10/60) *0.7+0.3*500/500 = 0.88,B 的優(yōu)先級是(1-3/60) *0.7+0.3*400/500 = 0.91 所以B的優(yōu)先級要比A高,B就會被調(diào)整到A的前面。
[0071]采用上述技術(shù)方案,對于訪問頻次比較高的數(shù)據(jù),前移其在鏈表中的位置,則在檢索中就可以被快速的檢索到,從而提高檢索速度。與少量數(shù)據(jù)的處理相比,在大量的數(shù)據(jù)處理中,數(shù)據(jù)檢索的速度對程序性能的提高影響更大。數(shù)據(jù)檢索的速度越快,越能提高程序的性能,進而提聞內(nèi)存的利用率。
[0072]本發(fā)明實施例中,通過不斷的更新和判斷數(shù)據(jù)的訪問時間和訪問次數(shù),判斷是否要對數(shù)據(jù)的位置進行調(diào)整,實現(xiàn)了數(shù)據(jù)位置的不斷更新和調(diào)整,這對于大量的數(shù)據(jù),尤其是對于訪問頻次不斷發(fā)生變化的大量數(shù)據(jù)而言,具有非常重要的意義。可以使緩存中訪問頻次高的數(shù)據(jù)始終處于鏈表的前面的位置處,始終具有高的檢索速度,進而使程序始終具有高的性能,而不會出現(xiàn)瓶頸期。
[0073]通過采用本發(fā)明公開的上述技術(shù)方案,得到了如下有益的效果:本發(fā)明結(jié)合了鏈表和radix tree這兩種數(shù)據(jù)結(jié)構(gòu)的特點,通過在radix tree的葉子節(jié)點上用鏈表來保存需要檢索的實際數(shù)據(jù),并將數(shù)據(jù)的key拆分成兩部分:第一部分用于檢索radix tree,找到key對應(yīng)的鏈表,第二部分用于檢索key對應(yīng)的鏈表,找到需要檢索的實際數(shù)據(jù)。從而實現(xiàn)了在處理大量數(shù)據(jù)的時候,既可以快速的檢索到數(shù)據(jù),又不需要創(chuàng)建大量的管理節(jié)點來管理葉子節(jié)點,節(jié)約了內(nèi)存空間,提高了內(nèi)存空間的利用率。
[0074]本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
[0075]本領(lǐng)域人員應(yīng)該理解的是,上述實施例提供的方法步驟的時序可根據(jù)實際情況進行適應(yīng)性調(diào)整,也可根據(jù)實際情況并發(fā)進行。
[0076]上述實施例涉及的方法中的全部或部分步驟可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計算機設(shè)備可讀取的存儲介質(zhì)中,用于執(zhí)行上述各實施例方法所述的全部或部分步驟。所述計算機設(shè)備,例如:個人計算機、服務(wù)器、網(wǎng)絡(luò)設(shè)備、智能移動終端、智能家居設(shè)備、穿戴式智能設(shè)備、車載智能設(shè)備等;所述的存儲介質(zhì),例如:RAM、ROM、磁碟、磁帶、光盤、閃存、U盤、移動硬盤、存儲卡、記憶棒、網(wǎng)絡(luò)服務(wù)器存儲、網(wǎng)絡(luò)云存儲坐寸。
[0077]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
[0078]以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視本發(fā)明的保護范圍。
【權(quán)利要求】
1.一種大容量緩存,其特征在于,所述大容量緩存的數(shù)據(jù)結(jié)構(gòu)包括鏈表和radix tree ;數(shù)據(jù)保存在所述鏈表中,所述鏈表設(shè)置于所述radix tree的葉子節(jié)點上;所述數(shù)據(jù)的key包括第一 key和第二 key,所述第一 key用于檢索所述radix tree,查找所述key對應(yīng)的所述鏈表;所述第二 key用于檢索所述key對應(yīng)的所述鏈表,查找所述數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的大容量緩存,其特征在于,所述radixtree的節(jié)點槽數(shù)量設(shè)置為16?128,且所述radix tree的高度設(shè)置為3?8。
3.根據(jù)權(quán)利要求2所述的大容量緩存,其特征在于,所述radixtree的節(jié)點槽數(shù)量設(shè)置為64,且所述radix tree的高度設(shè)置為5。
4.權(quán)利要求1-3任一項所述的大容量緩存的快速檢索方法,其特征在于,包括如下步驟:
S1,接收 key ; S2,根據(jù)第一 key檢索radix tree,查找所述key對應(yīng)的鏈表; S3,根據(jù)第二 key檢索所述key對應(yīng)的鏈表,查找所述key對應(yīng)的數(shù)據(jù);如果沒有查找到所述數(shù)據(jù),則返回處理結(jié)果;如果查找到了所述數(shù)據(jù),則執(zhí)行步驟S4-S5 ; S4,找到所述數(shù)據(jù)后,更新所述數(shù)據(jù)的訪問時間和訪問次數(shù); S5,返回查找到的所述數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的大容量緩存的快速檢索方法,其特征在于,在步驟S4和S5之間,還包括步驟, 根據(jù)所述數(shù)據(jù)的訪問時間和訪問次數(shù),判斷所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置是否需要調(diào)整,如果不需要調(diào)整,則執(zhí)行步驟S5 ;如果需要調(diào)整,則調(diào)整所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置。
6.根據(jù)權(quán)利要求5所述的大容量緩存的快速檢索方法,其特征在于,所述調(diào)整所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置,具體為,如果所述數(shù)據(jù)的訪問優(yōu)先級高于所述鏈表中的對比數(shù)據(jù)的訪問優(yōu)先級,則將所述數(shù)據(jù)移動到該對比數(shù)據(jù)的前面;如果所述數(shù)據(jù)的訪問優(yōu)先級低于所述鏈表中的對比數(shù)據(jù)的訪問優(yōu)先級,則將所述數(shù)據(jù)移動到該對比數(shù)據(jù)的后面。
7.權(quán)利要求1-3任一項所述的大容量緩存的構(gòu)建方法,其特征在于,包括如下步驟: 51,接收數(shù)據(jù)和key; 52,根據(jù)第一key檢索radix tree,查找所述key對應(yīng)的鏈表; S3,根據(jù)第二 key檢索所述key對應(yīng)的鏈表,查找所述key對應(yīng)的數(shù)據(jù);如果查找到了所述數(shù)據(jù),則放棄所述數(shù)據(jù)和key ;如果沒有查找到所述數(shù)據(jù),則執(zhí)行步驟S4-S5 ; S4,將所述數(shù)據(jù)插入到所述key對應(yīng)的鏈表中; S5,更新所述數(shù)據(jù)的訪問時間和訪問次數(shù)。
8.根據(jù)權(quán)利要求7所述的大容量緩存的構(gòu)建方法,其特征在于,步驟S5之后,還包括步驟, 根據(jù)所述數(shù)據(jù)的訪問時間和訪問次數(shù),判斷所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置是否需要調(diào)整,如果不需要調(diào)整,則結(jié)束;如果需要調(diào)整,則調(diào)整所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置。
9.根據(jù)權(quán)利要求8所述的大容量緩存的構(gòu)建方法,其特征在于,所述調(diào)整所述數(shù)據(jù)在所述key對應(yīng)的鏈表中的位置,具體為,具體為,如果所述數(shù)據(jù)的訪問優(yōu)先級高于所述鏈表中的對比數(shù)據(jù)的訪問優(yōu)先級,則將所述數(shù)據(jù)移動到該對比數(shù)據(jù)的前面;如果所述數(shù)據(jù)的訪問優(yōu)先級低于所述鏈表中的對比數(shù)據(jù)的訪問優(yōu)先級,則將所述數(shù)據(jù)移動到該對比數(shù)據(jù)的后面。
【文檔編號】G06F17/30GK104317810SQ201410495963
【公開日】2015年1月28日 申請日期:2014年9月24日 優(yōu)先權(quán)日:2014年9月24日
【發(fā)明者】楊耀敏, 易樂天, 曲維杰 申請人:北京云巢動脈科技有限公司