最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

一種數(shù)據(jù)緩存方法

文檔序號(hào):9489392閱讀:590來源:國(guó)知局
一種數(shù)據(jù)緩存方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及數(shù)據(jù)存儲(chǔ)技術(shù),尤其涉及一種數(shù)據(jù)緩存方法。
【背景技術(shù)】
[0002]現(xiàn)有的計(jì)算機(jī),為了提高數(shù)據(jù)訪問速度,需要把要訪問的數(shù)據(jù)寫入內(nèi)存中,再進(jìn)行訪問。內(nèi)存的空間有限,因此需要定期的清理過期數(shù)據(jù),以提供足夠的內(nèi)存空間。
[0003]現(xiàn)有技術(shù)中的緩存方法為,當(dāng)接收到要訪問的數(shù)據(jù)時(shí),首先與已有內(nèi)存中存儲(chǔ)的數(shù)據(jù)進(jìn)行比較,若已存在該數(shù)據(jù),則拋棄該數(shù)據(jù),可直接訪問內(nèi)存中的已有數(shù)據(jù),若否,則將該數(shù)據(jù)寫入內(nèi)存中。每隔一定時(shí)間掃描內(nèi)存數(shù)據(jù),將存儲(chǔ)時(shí)間超過設(shè)定值的過期數(shù)據(jù)刪除。上述緩存使用方案,可應(yīng)用于各種場(chǎng)景,例如應(yīng)用于流量分析統(tǒng)計(jì),即需要訪問的數(shù)據(jù)是流量,當(dāng)內(nèi)存中已存在該數(shù)據(jù)時(shí),可以對(duì)該數(shù)據(jù)進(jìn)行計(jì)次統(tǒng)計(jì)。
[0004]上述方案,由于需要將數(shù)據(jù)與所有內(nèi)存的數(shù)據(jù)進(jìn)行比較,因此效率較低,且由于定期清理內(nèi)存,會(huì)使得內(nèi)存突然減小,當(dāng)要訪問的數(shù)據(jù)量大時(shí),內(nèi)存又會(huì)突然增大,因此導(dǎo)致內(nèi)存容易抖動(dòng)。

【發(fā)明內(nèi)容】

[0005]本發(fā)明實(shí)施例提供一種數(shù)據(jù)緩存方法,以提高緩存效率,且避免內(nèi)存抖動(dòng)。
[0006]本發(fā)明實(shí)施例提供了一種數(shù)據(jù)緩存方法,該數(shù)據(jù)緩存方法包括:
[0007]初始化內(nèi)存,以建立第一鏈表、哈希表和第二鏈表,所述第一鏈表的節(jié)點(diǎn)用于存儲(chǔ)內(nèi)存中各存儲(chǔ)單元的存儲(chǔ)地址,所述哈希表的節(jié)點(diǎn)用于存儲(chǔ)數(shù)據(jù)的哈希值,所述第二鏈表的節(jié)點(diǎn)用于按照數(shù)據(jù)的存儲(chǔ)順序存儲(chǔ)對(duì)應(yīng)存儲(chǔ)單元的存儲(chǔ)地址;
[0008]接收到訪問數(shù)據(jù)時(shí),計(jì)算所述數(shù)據(jù)的哈希值,與所述哈希表中的哈希值進(jìn)行比對(duì);
[0009]若不存在比對(duì)一致的哈希值,則從所述第一鏈表中獲取空閑存儲(chǔ)單元的存儲(chǔ)地址,將所述數(shù)據(jù)存儲(chǔ)至所述空閑存儲(chǔ)單元中,且將該空閑存儲(chǔ)單元的存儲(chǔ)地址順序存儲(chǔ)至第二鏈表中,并將所述數(shù)據(jù)的哈希值存儲(chǔ)至所述哈希表中;
[0010]若存在比對(duì)一致的哈希值,則停止所述訪問數(shù)據(jù)向所述內(nèi)存的寫入操作。
[0011]進(jìn)一步的,所述第二鏈表為單鏈表
[0012]進(jìn)一步的,在從所述第一鏈表中獲取空閑存儲(chǔ)單元的存儲(chǔ)地址之前,還包括:
[0013]判斷所述第一鏈表中是否存在空閑存儲(chǔ)單元的存儲(chǔ)地址,若是,則執(zhí)行存儲(chǔ)操作,若否,則獲取所述第二鏈表的頭節(jié)點(diǎn);
[0014]將所述頭節(jié)點(diǎn)中的存儲(chǔ)地址清空,將清空的存儲(chǔ)地址對(duì)應(yīng)存儲(chǔ)數(shù)據(jù)的哈希值,從所述哈希表中刪除;
[0015]將所述數(shù)據(jù)存儲(chǔ)至清空的存儲(chǔ)地址對(duì)應(yīng)的存儲(chǔ)單元中,且將所述數(shù)據(jù)的哈希值存儲(chǔ)至所述哈希表中
[0016]將所述頭節(jié)點(diǎn)后的下一個(gè)節(jié)點(diǎn)更新為所述第二鏈表的頭節(jié)點(diǎn)。
[0017]進(jìn)一步的,初始化內(nèi)存,以建立第一鏈表、哈希表和第二鏈表包括:
[0018]根據(jù)待訪問數(shù)據(jù)的流量和時(shí)間有效性設(shè)置所述第一鏈表、哈希表和第二鏈表的節(jié)點(diǎn)數(shù)量。
[0019]本發(fā)明通過設(shè)置第一鏈表和第二鏈表,以循環(huán)方式刪除最早存儲(chǔ)的數(shù)據(jù),使得內(nèi)存的大小不會(huì)出現(xiàn)突然的增加或減小,因此避免了內(nèi)存抖動(dòng)現(xiàn)象。在存儲(chǔ)訪問的數(shù)據(jù)時(shí),僅比較數(shù)據(jù)的哈希值,而無需比較所有數(shù)據(jù),可提高比對(duì)的效率和速度。
【附圖說明】
[0020]圖1是本發(fā)明實(shí)施例一中提供的數(shù)據(jù)緩存方法流程圖;
[0021]圖2是本發(fā)明實(shí)施例二中提供的數(shù)據(jù)緩存方法流程圖;
[0022]圖3是本發(fā)明結(jié)合實(shí)施例一和實(shí)施例二提供的數(shù)據(jù)緩存方法流程圖。
【具體實(shí)施方式】
[0023]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明??梢岳斫獾氖牵颂幩枋龅木唧w實(shí)施例僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
[0024]實(shí)施例一
[0025]圖1是本發(fā)明實(shí)施例一中提供的數(shù)據(jù)緩存方法流程圖,本實(shí)施例可適用于任意數(shù)據(jù)緩存的情況,該方法可以由配置于終端的數(shù)據(jù)處理裝置來執(zhí)行,具體包括如下步驟:
[0026]S110、初始化內(nèi)存,以建立第一鏈表、哈希表和第二鏈表,所述第一鏈表的節(jié)點(diǎn)用于存儲(chǔ)內(nèi)存中各存儲(chǔ)單元的存儲(chǔ)地址,所述哈希表的節(jié)點(diǎn)用于存儲(chǔ)數(shù)據(jù)的哈希值,所述第二鏈表的節(jié)點(diǎn)用于按照數(shù)據(jù)的存儲(chǔ)順序存儲(chǔ)對(duì)應(yīng)存儲(chǔ)單元的存儲(chǔ)地址;
[0027]其中,該第二鏈表節(jié)點(diǎn)中存儲(chǔ)地址的儲(chǔ)存順序可以為讀入時(shí)間順序,最先讀入的存入該第二鏈表的頭節(jié)點(diǎn),其他節(jié)點(diǎn)以此類推,將訪問數(shù)據(jù)的存儲(chǔ)地址保存在第二鏈表中,該存儲(chǔ)方式方便內(nèi)存中的數(shù)據(jù)根據(jù)存入時(shí)間的先后進(jìn)行不斷更新。該第二鏈表可以是雙鏈表,優(yōu)選是單鏈表通過頭尾兩個(gè)指針實(shí)現(xiàn)對(duì)鏈表內(nèi)訪問。
[0028]為提高緩存效率,初始化內(nèi)存,以建立第一鏈表、哈希表和第二鏈表還可以包括:根據(jù)待訪問數(shù)據(jù)的流量和時(shí)間有效性設(shè)置所述第一鏈表、哈希表和第二鏈表的節(jié)點(diǎn)數(shù)量。
[0029]在初始化內(nèi)存時(shí),可以根據(jù)有效時(shí)間內(nèi)待訪問數(shù)據(jù)的大概流量設(shè)置該第一鏈表、哈希表和第二鏈表的節(jié)點(diǎn)數(shù)量。實(shí)現(xiàn)在滿足終端對(duì)緩存容量需求的同時(shí),盡可能的降低緩存容量,縮短訪問數(shù)據(jù)與內(nèi)存數(shù)據(jù)的匹配時(shí)間,從而提高緩存效率。又因?yàn)榛瑒?dòng)窗口內(nèi)數(shù)據(jù)的流量更為方便統(tǒng)計(jì),所以本實(shí)施例更適用于滑動(dòng)窗口的數(shù)據(jù)緩存情況。
[0030]S120、接收到訪問數(shù)據(jù)時(shí),計(jì)算所述數(shù)據(jù)的哈希值,與所述哈希表中的哈希值進(jìn)行比對(duì);
[0031]S130、若不存在比對(duì)一致的哈希值,則從所述第一鏈表中獲取空閑存儲(chǔ)單元的存儲(chǔ)地址,將所述數(shù)據(jù)存儲(chǔ)至所述空閑存儲(chǔ)單元中,且將該空閑存儲(chǔ)單元的存儲(chǔ)地址順序存儲(chǔ)至第二鏈表中,并將所述數(shù)據(jù)的哈希值存儲(chǔ)至所述哈希表中;
[0032]其中,第一鏈表中空閑存儲(chǔ)單元的標(biāo)記可以是:在第一鏈表存儲(chǔ)單元的存儲(chǔ)地址前加空閑標(biāo)志位,當(dāng)該標(biāo)志位為0時(shí),表示所述存儲(chǔ)地址所指示的存儲(chǔ)單元中的數(shù)據(jù)為空,否則表示所述存儲(chǔ)地址所指示的存儲(chǔ)單元中已存入數(shù)據(jù)。
[0033]S140、若存在比對(duì)一致的哈希值,則停止所述訪問數(shù)據(jù)向所述內(nèi)存的寫入操作。
[0034]若存在比對(duì)一致的哈希值,說明存儲(chǔ)單元中已經(jīng)存儲(chǔ)有該數(shù)據(jù)了,在停止所述訪問數(shù)據(jù)向所述內(nèi)存的寫入操作之后,還可以包括:拋棄該訪問數(shù)據(jù),并對(duì)該比對(duì)一致的哈希值進(jìn)行計(jì)次統(tǒng)計(jì),然后繼續(xù)讀取下一訪問數(shù)據(jù)。
[0035]在讀取下一訪問數(shù)據(jù)之前,還可以包括一些其他操作,例如可以記錄所丟掉的訪問數(shù)據(jù)的時(shí)間,或者對(duì)統(tǒng)計(jì)的數(shù)量存儲(chǔ)并顯示,等相關(guān)操作,從而方便系統(tǒng)對(duì)緩存中數(shù)據(jù)進(jìn)行控制操作。
[0036]該數(shù)據(jù)緩存方法的工作原理:根據(jù)訪問數(shù)據(jù)的流量和實(shí)效性確定鏈表節(jié)點(diǎn)數(shù)量,并建立第一鏈表、哈希表和第二鏈表,并對(duì)其初始化。當(dāng)接收到訪問數(shù)據(jù)時(shí),首先計(jì)算所述數(shù)據(jù)的哈希值,并將該值與哈希表中的哈希值進(jìn)行比對(duì)。如果比對(duì)不一致,則從所述第一鏈表中獲取空閑存儲(chǔ)單元的存儲(chǔ)地址,將所述數(shù)據(jù)存儲(chǔ)至所述空閑存儲(chǔ)單元中,且將該空閑存儲(chǔ)單元的存儲(chǔ)地址按照讀入順序存儲(chǔ)至第二鏈表中,并將所述數(shù)據(jù)的哈希值存儲(chǔ)至所述哈希表中,同時(shí)在第一鏈表中標(biāo)記該存儲(chǔ)單元為非空閑
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1