[發明專利]緩存數據的方法有效
| 申請號: | 201010297337.5 | 申請日: | 2010-09-29 |
| 公開(公告)號: | CN102436421A | 公開(公告)日: | 2012-05-02 |
| 發明(設計)人: | 朱正平;沈妍 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F12/08 | 分類號: | G06F12/08 |
| 代理公司: | 廣州華進聯合專利商標代理有限公司 44224 | 代理人: | 何平;曾旻輝 |
| 地址: | 518044 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 緩存 數據 方法 | ||
【技術領域】
本發明涉及緩存技術,尤其是涉及一種緩存數據的方法。
【背景技術】
在計算機技術中,通常都要用到緩存技術,比如計算的中間結果來不及被及時處理,都要進行臨時存儲。
傳統的通用緩存技術在內存不足時會使用一些策略刪除那些可能不會被再次用到的數據,比如最近最少使用策略,將最近一段時間內使用得最少的數據淘汰。內存最開始一般是連續分配的,當進行小數據存儲時,若內存不足,則會淘汰一些小數據。小數據被淘汰后,其之前所占據的內存空間被釋放。經過多次的存儲、刪除操作后,內存中會出現很多不連續的小的內存空間,即產生內存碎片。這些小的內存空間總和雖然大于一定的數值,但是卻不能用于存儲這個數值的,甚至不能用于存儲小于這個數值的較大的數據,因此會浪費內存。
【發明內容】
鑒于上述問題,有必要提供一種緩存數據的方法,可以有效存取較小的數據,提高內存利用率。
一種緩存數據的方法,包括以下步驟:從內存中劃分出過渡內存塊;判斷過渡內存塊的剩余空間是否足夠存儲緩存數據,如果是,則將緩存數據存入過渡內存塊;否則將過渡內存塊中的數據進行壓縮后存入緩存區,并清空過渡內存塊中的數據。
優選地,所述緩存區包括緩存塊,每當當前用于存儲的緩存塊容量不足以存儲壓縮后的緩存數據時,從內存中劃分一個新的緩存塊。
優選地,還包括將所述過渡內存塊劃分為塊頭和塊體的步驟,所述塊頭用于記錄塊體的狀態信息,所述塊體用于存儲緩存數據;所述方法還包括將所述緩存塊劃分為塊頭和塊體的步驟,所述緩存塊的塊頭用于記錄緩存塊的塊體的狀態信息,所述緩存塊的塊體用于存儲包括過渡內存塊的塊頭信息和過渡內存塊的塊體中的緩存數據的壓縮數據的壓縮塊。
優選地,當內存不足以劃分出新的緩存塊時,從緩存區中查找有效數據長度最小的兩個緩存塊,將所述兩個緩存塊中具有最多有效數據的壓縮塊集中存入其中一個緩存塊,將另一個緩存塊中的所有數據清除。
優選地,還包括:采用哈希映射表記錄鍵值與緩存數據在過渡內存塊或緩存塊中的位置信息的映射關系;所述位置信息包括為過渡內存塊和緩存塊分配的塊編號,以及緩存數據在過渡內存塊或壓縮塊中的第一偏移地址。
優選地,還包括采用塊編號-壓縮塊信息映射表記錄塊編號和壓縮塊信息的映射關系的步驟:當壓縮塊存入緩存塊時,將壓縮塊的塊編號和壓縮塊信息對應記錄在塊編號-壓縮塊信息映射表中,所述壓縮塊信息包括壓縮塊所在緩存塊的塊編號和壓縮塊在緩存塊中的第二偏移地址。
優選地,還包括刪除緩存數據的步驟,具體為:根據哈希映射表由鍵值獲得塊編號和第一偏移地址;若所述塊編號與過渡內存塊的塊編號相同,則修改過渡內存塊的塊頭內的塊體的狀態信息;否則根據所述塊編號查找塊編號-壓縮塊信息映射表,若查找到壓縮塊信息,則修改壓縮塊的塊頭信息和壓縮塊所在緩存塊的塊頭信息;從哈希映射表中刪除所述鍵值。
優選地,還包括查詢緩存數據的步驟,具體為:根據哈希映射表由鍵值獲得塊編號和第一偏移地址;若所述塊編號與過渡內存塊的塊編號相同,則根據所述塊編號和第一偏移地址得到緩存數據在過渡內存塊中的位置,根據該位置從過渡內存塊中讀取緩存數據;否則根據所述塊編號查找塊編號-壓縮塊信息映射表,若查找到壓縮塊信息,則根據壓縮塊信息中包含的緩存塊的塊編號和第二偏移地址從緩存塊中讀取壓縮塊,然后結合第一偏移地址從解壓縮后的數據中讀取所需的緩存數據。
上述方法,由于較小的緩存數據是先在過渡內存塊中存儲,然后作為一個整體存入緩存區,因此可以將小數據合并成大數據進行存取。消除了小數據在內存中因為進行頻繁存儲、刪除而導致的內存碎片。此外對緩存數據進行壓縮,還可進一步更好地利用內存空間。
【附圖說明】
圖1為一實施例的緩存數據的方法流程圖;
圖2為過渡內存塊和緩存塊的示意圖;
圖3為獲取緩存數據存儲位置的示意圖;
圖4為合并緩存塊中的壓縮塊的示意圖。
【具體實施方式】
以下結合附圖進行進一步說明。
如圖1所示,為一實施例的緩存數據的方法流程圖。該方法包括以下步驟:
S10:從內存中劃分出過渡內存塊。過渡內存塊是從內存中劃分出來的一塊存儲區域,用于暫時存儲緩存數據。本實施例的緩存數據的方法用于對小數據進行緩存,即對大小為1字節至8000字節的數據進行緩存,過渡內存塊必須至少能夠存儲可能存儲的最大數據的長度,即需大于或等于8000字節。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010297337.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種蛋氨酸寡肽及其在對蝦飼料中的應用
- 下一篇:一種生物增效劑
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





