欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

緩存數(shù)據(jù)的方法

文檔序號:6333047閱讀:649來源:國知局
專利名稱:緩存數(shù)據(jù)的方法
緩存數(shù)據(jù)的方法
技術(shù)領(lǐng)域
本發(fā)明涉及緩存技術(shù),尤其是涉及一種緩存數(shù)據(jù)的方法。背景技術(shù)
在計(jì)算機(jī)技術(shù)中,通常都要用到緩存技術(shù),比如計(jì)算的中間結(jié)果來不及被及時(shí)處理,都要進(jìn)行臨時(shí)存儲。傳統(tǒng)的通用緩存技術(shù)在內(nèi)存不足時(shí)會(huì)使用一些策略刪除那些可能不會(huì)被再次用到的數(shù)據(jù),比如最近最少使用策略,將最近一段時(shí)間內(nèi)使用得最少的數(shù)據(jù)淘汰。內(nèi)存最開始一般是連續(xù)分配的,當(dāng)進(jìn)行小數(shù)據(jù)存儲時(shí),若內(nèi)存不足,則會(huì)淘汰一些小數(shù)據(jù)。小數(shù)據(jù)被淘汰后,其之前所占據(jù)的內(nèi)存空間被釋放。經(jīng)過多次的存儲、刪除操作后,內(nèi)存中會(huì)出現(xiàn)很多不連續(xù)的小的內(nèi)存空間,即產(chǎn)生內(nèi)存碎片。這些小的內(nèi)存空間總和雖然大于一定的數(shù)值,但是卻不能用于存儲這個(gè)數(shù)值的,甚至不能用于存儲小于這個(gè)數(shù)值的較大的數(shù)據(jù),因此會(huì)浪費(fèi)內(nèi)存。

發(fā)明內(nèi)容
鑒于上述問題,有必要提供一種緩存數(shù)據(jù)的方法,可以有效存取較小的數(shù)據(jù),提高內(nèi)存利用率。一種緩存數(shù)據(jù)的方法,包括以下步驟從內(nèi)存中劃分出過渡內(nèi)存塊;判斷過渡內(nèi)存塊的剩余空間是否足夠存儲緩存數(shù)據(jù),如果是,則將緩存數(shù)據(jù)存入過渡內(nèi)存塊;否則將過渡內(nèi)存塊中的數(shù)據(jù)進(jìn)行壓縮后存入緩存區(qū),并清空過渡內(nèi)存塊中的數(shù)據(jù)。優(yōu)選地,所述緩存區(qū)包括緩存塊,每當(dāng)當(dāng)前用于存儲的緩存塊容量不足以存儲壓縮后的緩存數(shù)據(jù)時(shí),從內(nèi)存中劃分一個(gè)新的緩存塊。優(yōu)選地,還包括將所述過渡內(nèi)存塊劃分為塊頭和塊體的步驟,所述塊頭用于記錄塊體的狀態(tài)信息,所述塊體用于存儲緩存數(shù)據(jù);所述方法還包括將所述緩存塊劃分為塊頭和塊體的步驟,所述緩存塊的塊頭用于記錄緩存塊的塊體的狀態(tài)信息,所述緩存塊的塊體用于存儲包括過渡內(nèi)存塊的塊頭信息和過渡內(nèi)存塊的塊體中的緩存數(shù)據(jù)的壓縮數(shù)據(jù)的壓縮塊。優(yōu)選地,當(dāng)內(nèi)存不足以劃分出新的緩存塊時(shí),從緩存區(qū)中查找有效數(shù)據(jù)長度最小的兩個(gè)緩存塊,將所述兩個(gè)緩存塊中具有最多有效數(shù)據(jù)的壓縮塊集中存入其中一個(gè)緩存塊,將另一個(gè)緩存塊中的所有數(shù)據(jù)清除。優(yōu)選地,還包括采用哈希映射表記錄鍵值與緩存數(shù)據(jù)在過渡內(nèi)存塊或緩存塊中的位置信息的映射關(guān)系;所述位置信息包括為過渡內(nèi)存塊和緩存塊分配的塊編號,以及緩存數(shù)據(jù)在過渡內(nèi)存塊或壓縮塊中的第一偏移地址。優(yōu)選地,還包括采用塊編號-壓縮塊信息映射表記錄塊編號和壓縮塊信息的映射關(guān)系的步驟當(dāng)壓縮塊存入緩存塊時(shí),將壓縮塊的塊編號和壓縮塊信息對應(yīng)記錄在塊編號-壓縮塊信息映射表中,所述壓縮塊信息包括壓縮塊所在緩存塊的塊編號和壓縮塊在緩存塊中的第二偏移地址。優(yōu)選地,還包括刪除緩存數(shù)據(jù)的步驟,具體為根據(jù)哈希映射表由鍵值獲得塊編號和第一偏移地址;若所述塊編號與過渡內(nèi)存塊的塊編號相同,則修改過渡內(nèi)存塊的塊頭內(nèi)的塊體的狀態(tài)信息;否則根據(jù)所述塊編號查找塊編號-壓縮塊信息映射表,若查找到壓縮塊信息,則修改壓縮塊的塊頭信息和壓縮塊所在緩存塊的塊頭信息;從哈希 映射表中刪除所述鍵值。優(yōu)選地,還包括查詢緩存數(shù)據(jù)的步驟,具體為根據(jù)哈希映射表由鍵值獲得塊編號和第一偏移地址;若所述塊編號與過渡內(nèi)存塊的塊編號相同,則根據(jù)所述塊編號和第一偏移地址得到緩存數(shù)據(jù)在過渡內(nèi)存塊中的位置,根據(jù)該位置從過渡內(nèi)存塊中讀取緩存數(shù)據(jù); 否則根據(jù)所述塊編號查找塊編號_壓縮塊信息映射表,若查找到壓縮塊信息,則根據(jù)壓縮塊信息中包含的緩存塊的塊編號和第二偏移地址從緩存塊中讀取壓縮塊,然后結(jié)合第一偏移地址從解壓縮后的數(shù)據(jù)中讀取所需的緩存數(shù)據(jù)。上述方法,由于較小的緩存數(shù)據(jù)是先在過渡內(nèi)存塊中存儲,然后作為一個(gè)整體存入緩存區(qū),因此可以將小數(shù)據(jù)合并成大數(shù)據(jù)進(jìn)行存取。消除了小數(shù)據(jù)在內(nèi)存中因?yàn)檫M(jìn)行頻繁存儲、刪除而導(dǎo)致的內(nèi)存碎片。此外對緩存數(shù)據(jù)進(jìn)行壓縮,還可進(jìn)一步更好地利用內(nèi)存空間。

圖1為一實(shí)施例的緩存數(shù)據(jù)的方法流程圖;圖2為過渡內(nèi)存塊和緩存塊的示意圖;圖3為獲取緩存數(shù)據(jù)存儲位置的示意圖;圖4為合并緩存塊中的壓縮塊的示意圖。
具體實(shí)施方式以下結(jié)合附圖進(jìn)行進(jìn)一步說明。如圖1所示,為一實(shí)施例的緩存數(shù)據(jù)的方法流程圖。該方法包括以下步驟S10:從內(nèi)存中劃分出過渡內(nèi)存塊。過渡內(nèi)存塊是從內(nèi)存中劃分出來的一塊存儲區(qū)域,用于暫時(shí)存儲緩存數(shù)據(jù)。本實(shí)施例的緩存數(shù)據(jù)的方法用于對小數(shù)據(jù)進(jìn)行緩存,即對大小為1字節(jié)至8000字節(jié)的數(shù)據(jù)進(jìn)行緩存,過渡內(nèi)存塊必須至少能夠存儲可能存儲的最大數(shù)據(jù)的長度,即需大于或等于8000字節(jié)。S20 判斷過渡內(nèi)存塊的剩余空間是否足夠存儲緩存數(shù)據(jù)。如果剩余空間足夠,進(jìn)入步驟S30,否則轉(zhuǎn)入步驟S40。S30:將緩存數(shù)據(jù)存入過渡內(nèi)存塊。緩存數(shù)據(jù)在過渡內(nèi)存塊中連續(xù)存儲。S40:將過渡內(nèi)存塊中的緩存數(shù)據(jù)進(jìn)行壓縮后存入緩存區(qū),并清空過渡內(nèi)存塊中的數(shù)據(jù)。將過渡內(nèi)存塊中所有的緩存數(shù)據(jù)進(jìn)行壓縮后作為一個(gè)整體存入緩存區(qū),過渡內(nèi)存塊則可被清空,然后繼續(xù)接收新的緩存數(shù)據(jù)。本實(shí)施例的方法,由于較小的緩存數(shù)據(jù)是先在過渡內(nèi)存塊中存儲,然后作為一個(gè)整體存入緩存區(qū),因此可以將小數(shù)據(jù)合并成大數(shù)據(jù)進(jìn)行存取。消除了小數(shù)據(jù)在內(nèi)存中因?yàn)檫M(jìn)行頻繁存儲、刪除而導(dǎo)致的內(nèi)存碎片。此外,對緩存數(shù)據(jù)進(jìn)行壓縮,還可進(jìn)一步更好地利用內(nèi)存空間。進(jìn)一步地,還包括將所述過渡內(nèi)存塊劃分為塊頭和塊體的步驟。如圖2所示,過渡內(nèi)存塊10包括兩部分塊頭11和塊體12。塊頭11內(nèi)存儲了塊體12的狀態(tài)信息,塊體12 可用于存儲緩存數(shù)據(jù)13。其中,塊體12的狀態(tài)信息包括塊體12內(nèi)的數(shù)據(jù)總長度、有效數(shù)據(jù)個(gè)數(shù)、有效數(shù)據(jù)的長度以及塊編號。最初劃分過渡內(nèi)存塊10時(shí),塊體12內(nèi)沒有存儲任何數(shù)據(jù),剩余存儲空間最大,塊頭11內(nèi)記錄的數(shù)據(jù)總長度、有效數(shù)據(jù)個(gè)數(shù)、有效數(shù)據(jù)的長度的值均為0,塊編號也設(shè)定一個(gè)初始值。最開始時(shí),由于塊體12的存儲空間大于等 于所有可能存儲的小數(shù)據(jù),因此是足夠存儲的。當(dāng)存儲了一部分緩存數(shù)據(jù)13后,塊體12剩余的存儲空間變小,有可能不足以存儲接下來的緩存數(shù)據(jù)14。在步驟S30中,結(jié)合圖2,若塊體12剩余的存儲空間足夠存儲接下來的緩存數(shù)據(jù) 14,則將緩存數(shù)據(jù)14緊鄰塊體12中已經(jīng)存儲的緩存數(shù)據(jù)13進(jìn)行存儲,若塊體12中無數(shù)據(jù), 則從塊體12的起始位置開始存儲。存儲了新的緩存數(shù)據(jù)14之后,需要將塊體12的存儲情況進(jìn)行更新,即更新塊體12的狀態(tài)信息,包括將新的緩存數(shù)據(jù)的長度計(jì)入數(shù)據(jù)總長度、有效數(shù)據(jù)個(gè)數(shù)增加1、新的緩存數(shù)據(jù)的有效長度計(jì)入有效數(shù)據(jù)的長度,塊編號不變。緩存數(shù)據(jù) 13、14在過渡內(nèi)存塊10中的位置信息是相對于塊體12的起始地址的第一偏移地址。本實(shí)施例中,采用哈希(hash)映射表來記錄緩存數(shù)據(jù)13的位置信息,每存入塊體12 —個(gè)緩存數(shù)據(jù)13,將過渡內(nèi)存塊10的塊編號(seqno)連同第一偏移地址存入哈希映射表,并與一個(gè)鍵值(key)對應(yīng)。因此可以通過哈希映射表中的鍵值(key)得到緩存數(shù)據(jù)(value)的位置 fn息ο在步驟S40中,結(jié)合圖2,當(dāng)緩存數(shù)據(jù)14不能繼續(xù)存入過渡內(nèi)存塊10中時(shí),將過渡內(nèi)存塊10中的所有緩存數(shù)據(jù)13轉(zhuǎn)存入緩存區(qū)200。緩存區(qū)200包括至少一個(gè)緩存塊20。 緩存塊20同樣是從內(nèi)存中劃出的一塊內(nèi)存區(qū)域,包括塊頭21和塊體22,其中緩存塊20的塊頭21存儲緩存塊20的相關(guān)信息,具體包括塊體22中存儲的總的有效數(shù)據(jù)的長度和有效數(shù)據(jù)個(gè)數(shù)。緩存塊20的塊體22的存儲空間相比于過渡內(nèi)存塊10的塊體12的存儲空間大, 一般是緩存塊20的塊體22的存儲空間數(shù)倍于過渡內(nèi)存塊10的塊體12的存儲空間。在轉(zhuǎn)存之前將過渡內(nèi)存塊10進(jìn)行壓縮。壓縮是僅對過渡內(nèi)存塊10的塊體12中的緩存數(shù)據(jù)進(jìn)行壓縮,塊頭11內(nèi)的數(shù)據(jù)保留,因此存入緩存區(qū)200的是包括塊頭11中的信息和塊體12中緩存數(shù)據(jù)的壓縮數(shù)據(jù)的壓縮塊23,既保留了過渡內(nèi)存塊10的塊頭11中的信息同時(shí)又擁有塊體12內(nèi)的緩存數(shù)據(jù)。因此壓縮塊23的塊編號即是原來過渡內(nèi)存塊10的塊編號。塊體22用于存儲壓縮塊23。用一個(gè)塊編號-壓縮塊信息映射表(seqno映射表)來記錄壓縮塊信息。每存入一個(gè)壓縮塊23到塊體22中,就將壓縮塊信息加入seqno映射表,并與壓縮塊23對應(yīng)的塊編號對應(yīng)存儲。壓縮塊信息主要包括所在的緩存塊20的塊編號以及在緩存塊20內(nèi)的第二偏移地址。通過seqno映射表,可先由哈希映射表獲得塊編號,根據(jù)塊編號獲得壓縮塊信息, 進(jìn)而根據(jù)壓縮塊信息得到緩存數(shù)據(jù)13的位置。緩存數(shù)據(jù)轉(zhuǎn)存完成后,過渡內(nèi)存塊10中的緩存數(shù)據(jù)被清除,可用于接收存儲新的緩沖數(shù)據(jù),即塊體12中沒有數(shù)據(jù),同時(shí)塊頭11中保存的塊體12的狀態(tài)信息也被重置,并且為過渡內(nèi)存塊10分配新的塊編號。本實(shí)施例中,過渡內(nèi)存塊10和緩存塊20都有塊編號, 用一個(gè)64位的二進(jìn)位整數(shù)表示,每次劃出新的緩存塊20時(shí)、過渡內(nèi)存塊10被清空時(shí)或者緩存塊20被清空時(shí),塊編號都會(huì)重新分配,并且在已分配的塊編號的基礎(chǔ)上增加1。緩存區(qū)200最初包括一個(gè)緩存塊20,壓縮塊23持續(xù)存入塊體22會(huì)導(dǎo)致緩存塊20 存儲空間減少。如果當(dāng)前用于存儲的緩存塊20 (—般用一個(gè)指針來指示)的剩余容量不足以存儲壓縮塊23時(shí),就需要另外再從內(nèi)存中劃出一塊緩存塊加入緩存區(qū)200。一般來說,緩存塊的大小保持一致以便于管理。并且緩存塊之間是相互獨(dú)立的,不必須是連續(xù)的內(nèi)存區(qū)域。劃出新的緩存塊后,新的壓縮塊即可存入新增的緩存塊。當(dāng)用于緩存數(shù)據(jù)的內(nèi)存不足以劃分出新的緩存塊時(shí),則表明內(nèi)存不足。根據(jù)下述方法淘汰駐留于緩存區(qū)200中的一些數(shù)據(jù)。用于緩存數(shù)據(jù)的內(nèi)存可以是指定容量大小的專用于緩存數(shù)據(jù)的內(nèi)存,也可以是系統(tǒng)中整個(gè)可以調(diào)用的內(nèi)存。從緩存區(qū)200中找出有效數(shù)據(jù)長度最小的兩個(gè)緩存塊,根據(jù)緩存塊的塊頭中的相關(guān)信息即可得到有效數(shù)據(jù)長度。將這兩個(gè)緩存塊的緩存數(shù)據(jù)合并,即將兩個(gè)緩存塊中具有最多有效數(shù)據(jù)的壓縮塊集中存入其中一個(gè)緩存塊,將另一個(gè)緩存塊中的所有數(shù) 據(jù)清除,并更新兩個(gè)緩存塊的相關(guān)信息。在得到有效數(shù)據(jù)長度最小的兩個(gè)緩存塊后,根據(jù)緩存塊中每個(gè)壓縮塊的塊頭存儲的信息可得 到壓縮塊中有效數(shù)據(jù)的個(gè)數(shù)。通過比較這兩個(gè)緩存塊中的所有壓縮塊中有效數(shù)據(jù)的個(gè)數(shù),可將壓縮塊按照有效數(shù)據(jù)的個(gè)數(shù)從多到少進(jìn)行排序,然后獲得具有最多有效數(shù)據(jù)的多個(gè)壓縮塊。將最多有效數(shù)據(jù)的壓縮塊集中存入其中一個(gè)緩存塊,并且清除該緩存塊中有效數(shù)據(jù)較少的壓縮塊,直到該緩存塊中不能存入接下來的壓縮塊為止。另一個(gè)緩存塊內(nèi)的壓縮塊則全部被清除,成為一個(gè)空的緩存塊。如圖4所示,緩存塊m和緩存塊η是有效數(shù)據(jù)總長度最小的兩個(gè)緩存塊。緩存塊m內(nèi)存儲了具有10個(gè)有效數(shù)據(jù)的壓縮塊1、具有5 個(gè)有效數(shù)據(jù)的壓縮塊2和具有8個(gè)壓縮塊3,緩存塊η內(nèi)存儲了具有7個(gè)有效數(shù)據(jù)的壓縮塊 4、具有6個(gè)有效數(shù)據(jù)的壓縮塊5以及具有3個(gè)有效數(shù)據(jù)的壓縮塊6。當(dāng)內(nèi)存不足時(shí),將這兩個(gè)緩存塊合并的方法是將具有最多有效數(shù)據(jù)的壓縮塊如壓縮塊1、壓縮塊3以及壓縮塊4存入緩存塊η (或緩存塊m),另一個(gè)緩存塊m(或緩存塊η)中的數(shù)據(jù)全部清除。合并完成后, 將緩存塊m和緩存塊η的相關(guān)信息更新,具體是為緩存塊m和緩存塊η分配新的塊編號,更新緩存塊中的有效數(shù)據(jù)個(gè)數(shù)和有效數(shù)據(jù)長度。同時(shí)被清除的壓縮塊在seqno映射表中也被刪除。本實(shí)施例的方法的刪除緩存數(shù)據(jù)的操作并不真正刪除緩存數(shù)據(jù),而是將訪問緩存數(shù)據(jù)的位置信息刪除。具體的,如圖3所示,過渡內(nèi)存塊10中緩存數(shù)據(jù)的位置信息可由哈希映射表直接得到,因此若根據(jù)鍵值(key)得到的塊編號(seqno)是過渡內(nèi)存塊10的塊編號,則直接刪除哈希映射表中的鍵值(key)及對應(yīng)的緩存數(shù)據(jù)(value)位置信息。同時(shí)修改過渡內(nèi)存塊10的塊頭信息。若塊編號(seqno)不是過渡內(nèi)存塊10的塊編號,查找seqno映射表,若seqno映射表中也沒有該seqno,則可直接刪除哈希映射表中的key。若根據(jù)seqno 查找到對應(yīng)的壓縮塊信息,則首先修改壓縮塊的相關(guān)信息,主要包括減少有效數(shù)據(jù)個(gè)數(shù)以及有效數(shù)據(jù)的總長度;其次修改緩存塊的相關(guān)信息,主要也是減少有效數(shù)據(jù)個(gè)數(shù)以及有效數(shù)據(jù)的總長度;最后將key從哈希映射表里刪除。本實(shí)施例的方法還包括查詢緩存數(shù)據(jù)的步驟。首先通過哈希映射表得到key對應(yīng)的緩存數(shù)據(jù)的位置信息(包括seqno和第一偏移地址),如果seqno與過渡內(nèi)存塊10的塊編號相同,則直接根據(jù)過渡內(nèi)存塊10的起始地址和第一偏移地址獲得緩存數(shù)據(jù)在內(nèi)存中的位置,直接從過渡內(nèi)存塊10中讀取緩存數(shù)據(jù)。如果Seqno與過渡內(nèi)存塊10的塊編號不相同,則繼續(xù)查詢塊seqno映射表,如果seqno映射表中不存在上述的seqno,則從哈希映射表中刪除相應(yīng)的key。否則根據(jù)seqno查找到壓縮塊信息,根據(jù)壓縮塊信息中的緩存塊的塊編號和第二偏移地址從相應(yīng)的緩存塊中讀取壓縮塊進(jìn)行解壓縮,然后根據(jù)第一偏移地址從解壓縮后的緩存數(shù)據(jù)集合中讀取需要查詢的緩存數(shù)據(jù)。

以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種緩存數(shù)據(jù)的方法,其特征在于,包括以下步驟從內(nèi)存中劃分出過渡內(nèi)存塊;判斷過渡內(nèi)存塊的剩余空間是否足夠存儲緩存數(shù)據(jù),如果是,則將緩存數(shù)據(jù)存入過渡內(nèi)存塊;否則將過渡內(nèi)存塊中的數(shù)據(jù)進(jìn)行壓縮后存入緩存區(qū),并清空過渡內(nèi)存塊中的數(shù)據(jù)。
2.如權(quán)利要求1所述的緩存數(shù)據(jù)的方法,其特征在于,所述緩存區(qū)包括緩存塊,每當(dāng)當(dāng)前用于存儲的緩存塊容量不足以存儲壓縮后的緩存數(shù)據(jù)時(shí),從內(nèi)存中劃分一個(gè)新的緩存塊。
3.如權(quán)利要求2所述的緩存數(shù)據(jù)的方法,其特征在于,還包括將所述過渡內(nèi)存塊劃分為塊頭和塊體的步驟,所述塊頭用于記錄塊體的狀態(tài)信息,所述塊體用于存儲緩存數(shù)據(jù);所述方法還包括將所述緩存塊劃分為塊頭和塊體的步驟,所述緩存塊的塊頭用于記錄緩存塊的塊體的狀態(tài)信息,所述緩存塊的塊體用于存儲包括過渡內(nèi)存塊的塊頭信息和過渡內(nèi)存塊的塊體中的緩存數(shù)據(jù)的壓縮數(shù)據(jù)的壓縮塊。
4.如權(quán)利要求3所述的緩存數(shù)據(jù)的方法,其特征在于,當(dāng)用于緩存數(shù)據(jù)的內(nèi)存不足以劃分出新的緩存塊時(shí),從緩存區(qū)中查找有效數(shù)據(jù)長度最小的兩個(gè)緩存塊,將所述兩個(gè)緩存塊中具有最多有效數(shù)據(jù)的壓縮塊集中存入其中一個(gè)緩存塊,將另一個(gè)緩存塊中的所有數(shù)據(jù)清除。
5.如權(quán)利要求3所述的緩存數(shù)據(jù)的方法,其特征在于,還包括采用哈希映射表記錄鍵值與緩存數(shù)據(jù)在過渡內(nèi)存塊或緩存塊中的位置信息的映射關(guān)系;所述位置信息包括為過渡內(nèi)存塊和緩存塊分配的塊編號,以及緩存數(shù)據(jù)在過渡內(nèi)存塊或壓縮塊中的第一偏移地址。
6.如權(quán)利要求5所述的緩存數(shù)據(jù)的方法,其特征在于,還包括采用塊編號_壓縮塊信息映射表記錄塊編號和壓縮塊信息的映射關(guān)系的步驟當(dāng)壓縮塊存入緩存塊時(shí),將壓縮塊的塊編號和壓縮塊信息對應(yīng)記錄在塊編號_壓縮塊信息映射表中,所述壓縮塊信息包括壓縮塊所在緩存塊的塊編號和壓縮塊在緩存塊中的第二偏移地址。
7.如權(quán)利要求6所述的緩存數(shù)據(jù)的方法,其特征在于,還包括刪除緩存數(shù)據(jù)的步驟,具體為根據(jù)哈希映射表由鍵值獲得塊編號和第一偏移地址;若所述塊編號與過渡內(nèi)存塊的塊編號相同,則修改過渡內(nèi)存塊的塊頭內(nèi)的塊體的狀態(tài) fn息;否則根據(jù)所述塊編號查找塊編號-壓縮塊信息映射表,若查找到壓縮塊信息,則修改壓縮塊的塊頭信息和壓縮塊所在緩存塊的塊頭信息;從哈希映射表中刪除所述鍵值。
8.如權(quán)利要求6所述的緩存數(shù)據(jù)的方法,其特征在于,還包括查詢緩存數(shù)據(jù)的步驟,具體為根據(jù)哈希映射表由鍵值獲得塊編號和第一偏移地址;若所述塊編號與過渡內(nèi)存塊的塊編號相同,則根據(jù)所述塊編號和第一偏移地址得到緩存數(shù)據(jù)在過渡內(nèi)存塊中的位置,根據(jù)該位置從過渡內(nèi)存塊中讀取緩存數(shù)據(jù);否則根據(jù)所述塊編號查 找塊編號-壓縮塊信息映射表,若查找到壓縮塊信息,則根據(jù)壓縮塊信息中包含的緩存塊的塊編號和第二偏移地址從緩存塊中讀取壓縮塊,然后結(jié)合第一偏移地址從解壓縮后的數(shù)據(jù)中讀取所需的緩存數(shù)據(jù)。
全文摘要
一種緩存數(shù)據(jù)的方法,包括以下步驟從內(nèi)存中劃分出過渡內(nèi)存塊;判斷過渡內(nèi)存塊的剩余空間是否足夠存儲緩存數(shù)據(jù),如果是,則將緩存數(shù)據(jù)存入過渡內(nèi)存塊;否則將過渡內(nèi)存塊中的數(shù)據(jù)進(jìn)行壓縮后存入緩存區(qū),并清空過渡內(nèi)存塊中的數(shù)據(jù)。上述方法,由于較小的緩存數(shù)據(jù)是先在過渡內(nèi)存塊中存儲,然后作為一個(gè)整體存入緩存區(qū),因此可以將小數(shù)據(jù)合并成大數(shù)據(jù)進(jìn)行存取。消除了小數(shù)據(jù)在內(nèi)存中因?yàn)檫M(jìn)行頻繁存儲、刪除而導(dǎo)致的內(nèi)存碎片。此外對緩存數(shù)據(jù)進(jìn)行壓縮,還可進(jìn)一步更好地利用內(nèi)存空間。
文檔編號G06F12/08GK102436421SQ20101029733
公開日2012年5月2日 申請日期2010年9月29日 優(yōu)先權(quán)日2010年9月29日
發(fā)明者朱正平, 沈妍 申請人:騰訊科技(深圳)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
通化市| 博客| 磐石市| 黑河市| 长白| 平江县| 万全县| 章丘市| 光山县| 莱芜市| 巴塘县| 肥城市| 磐石市| 自贡市| 乌拉特中旗| 新民市| 大石桥市| 准格尔旗| 祥云县| 邯郸县| 德江县| 拜城县| 青川县| 昭觉县| 岑溪市| 华容县| 东乌珠穆沁旗| 牡丹江市| 寻乌县| 土默特右旗| 彩票| 湖北省| 和林格尔县| 阿克陶县| 庆阳市| 绩溪县| 调兵山市| 铁岭县| 涞源县| 永川市| 赣州市|