專利名稱:一種內存索引壓縮方法和裝置的制作方法
技術領域:
本發明涉及計算機技術領域,特別涉及一種內存索引壓縮方法和裝置。
背景技術:
現有技術中,內存索引鍵值中包含字符類型,由于字符類型的長度不確定性,占用的內存量也不確定。大部分情況下內存索引對內存的使用較高都是由于字符類型的占用量比較高引起的。
發明內容
有鑒于此,本發明提供了一種內存索引壓縮方法和裝置,本發明的技術方案能有效對內存索引進行壓縮,減小內存索引對內存的占用。為達到上述目的,本發明的技術方案是這樣實現的:本發明公開了一種內存索引壓縮方法,該方法包括:在內存中創建索引哈希鏈表空間;當有內存索引鍵值需要保存到內存時,根據第一哈希函數對該內存索引鍵值進行哈希計算,得到哈希鍵值;查看所述索引哈希鏈表空間中是否已存在與所述哈希鍵值相同的值,是則不做操作,否則將所述哈希鍵值保存到所述索引哈希鏈表空間中。上述方法中,所述索引哈希鏈表空間包含η個索引區,對應序號依次為O η-l ;查看所述索弓I哈希鏈表空間中是否已存在與所述哈希鍵值相同的值包括:根據第二哈希函數對該內存索引鍵值進行哈希計算,對該哈希計算結果進行模η運算得到O η-1中的一個值,確定序號與該值對應的索引區,查看該確定的索引區中是否已存在與所述哈希鍵值相同的值;所述將哈希鍵值保存到所述索引哈希鏈表空間中包括:將所述哈希鍵值保存到該確定的索引區中。在上述方法中,將所述哈希鍵值保存到該確定的索引區中包括:構建一個索引條目,該索引條目包括所述哈希鍵值和一個鏈表指針;將構建的索引條目添加到該確定的索引區中;其中,所述鏈表指針指向下一個索引條目。在上述方法中,所述第一哈希函數為DJB哈希函數;所述第二哈希函數為CRC16哈希函數。本發明還公開了一種內存索引壓縮裝置,該裝置包括:內存模塊、創建模塊和內存索引壓縮模塊,其中:創建模塊,用于在內存模塊中創建索引哈希鏈表空間,并通知內存索引壓縮模塊;內存索引壓縮模塊,用于在接收到內存索引鍵值時,根據第一哈希函數對該內存索引鍵值進行哈希計算,得到哈希鍵值,然后查看內存模塊中的索引哈希鏈表空間中是否已存在與所述哈希鍵值相同的值,是則不做操作,否則將所述哈希鍵值保存到所述索引哈希鏈表空間中。在上述裝置中,所述創建模塊,用于在內存模塊中創建包含η個索引區的索引哈希鏈表空間;該η個索引區的序號依次為O η-l ;所述內存索引壓縮模塊,用于根據第二哈希函數對該內存索引鍵值進行哈希計算,對該哈希計算結果進行模η運算得到O η-l中的一個值,確定序號與該值對應的索引區,查看該確定的索引區中是否已存在與所述哈希鍵值相同的值,如果不存在則將所述哈希鍵值保存到該確定的索引區中。在上述裝置中,所述內存索引壓縮模塊,用于構建一個索引條目,將構建的索引條目添加到該確定的索引區中;其中,所述索引條目包括所述哈希鍵值和一個鏈表指針;所述鏈表指針指向下一個索引條目。在上述裝置中,所述內存索引壓縮模塊,用于根據第DJB哈希函數對該內存索引鍵值進行哈希計算,得到哈希鍵值;并用于根據CRC16哈希函數對該內存索引鍵值進行哈希計算,對該哈希計算結果進行模η運算得到O η-l中的一個值。本發明實施例的有益效果是:本發明的技術方案中,由于對內存索引鍵值進行哈希運算后將整數型的哈希鍵值保存到內存中,整數型的數據對內存的占用要大大小于字符類型的數據對內存的占用,因此相對現有技術中直接在內存中保存字符類型的內存索引鍵值的方案相比,能有效對內存索引進行壓縮,減小內存索引對內存的占用。
圖1是本發明實施例中的一種內存索引壓縮方法的流程圖;圖2是本發明實施例中的一種內存索引壓縮裝置的結構示意圖。
具體實施例方式為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明實施方式作進一步地詳細描述。圖1是本發明實施例中的一種內存索引壓縮方法的流程圖。如圖1所示,該方法包括:101,在內存中創建索引哈希鏈表空間;102,當有內存索引鍵值需要保存到內存時,根據第一哈希函數對該內存索引鍵值進行哈希計算,得到哈希鍵值;103,查看所述索引哈希鏈表空間中是否已存在與所述哈希鍵值相同的值,是則不做操作,否則將所述哈希鍵值保存到所述索引哈希鏈表空間中。步驟101中所創建的索引哈希鏈表空間包含η個索引區,對應序號依次為O
η~1 ο步驟103中的查看所述索引哈希鏈表空間中是否已存在與所述哈希鍵值相同的值包括:根據第二哈希函數對該內存索引鍵值進行哈希計算,對該哈希計算結果進行模η運算得到O η-l中的一個值,確定序號與該值對應的索引區,查看該確定的索引區中是否已存在與所述哈希鍵值相同的值;
步驟103中所述將哈希鍵值保存到所述索引哈希鏈表空間中包括:將所述哈希鍵值保存到該確定的索引區中。將所述哈希鍵值保存到該確定的索引區中具體可以為:構建一個索引條目,該索引條目包括所述哈希鍵值和一個鏈表指針;將構建的索引條目添加到該確定的索引區中;其中,所述鏈表指針指向下一個索引條目。所述的第一哈希函數和第二哈希函數可以取任意的哈希函數。在本發明的一個實施例中,所述第一哈希函數為DJB哈希函數;所述第二哈希函數為CRC16哈希函數。下面給出一個具體的實施例對上述方案進行說明。首先在內存中創建一個包含η個索引區的索引哈希鏈表空間,具體可以如表I所示:
權利要求
1.一種內存索引壓縮方法,其特征在于,該方法包括: 在內存中創建索引哈希鏈表空間; 當有內存索引鍵值需要保存到內存時,根據第一哈希函數對該內存索引鍵值進行哈希計算,得到哈希鍵值; 查看所述索引哈希鏈表空間中是否已存在與所述哈希鍵值相同的值,是則不做操作,否則將所述哈希鍵值保存到所述索引哈希鏈表空間中。
2.根據權利要求1所述的方法,其特征在于,所述索引哈希鏈表空間包含η個索引區,對應序號依次為O η-l ; 查看所述索引哈希鏈表空間中是否已存在與所述哈希鍵值相同的值包括:根據第二哈希函數對該內存索引鍵值進行哈希計算,對該哈希計算結果進行模η運算得到O η-l中的一個值,確定序號與該值對應的索引區,查看該確定的索引區中是否已存在與所述哈希鍵值相同的值; 所述將哈希鍵值保存到所述索引哈希鏈表空間中包括:將所述哈希鍵值保存到該確定的索引區中。
3.根據權利要求2所述的方法,其特征在于,將所述哈希鍵值保存到該確定的索引區中包括: 構建一個索引條目,該索引條目包括所述哈希鍵值和一個鏈表指針; 將構建的索引條目添加到該確定的索引區中; 其中,所述鏈表指針指向下一個索引條目。`
4.根據權利要求2所述的方法,其特征在于, 所述第一哈希函數為DJB哈希函數; 所述第二哈希函數為CRC16哈希函數。
5.一種內存索引壓縮裝置,其特征在于,該裝置包括:內存模塊、創建模塊和內存索引壓縮模塊,其中: 創建模塊,用于在內存模塊中創建索引哈希鏈表空間,并通知內存索引壓縮模塊; 內存索引壓縮模塊,用于在接收到內存索引鍵值時,根據第一哈希函數對該內存索引鍵值進行哈希計算,得到哈希鍵值,然后查看內存模塊中的索引哈希鏈表空間中是否已存在與所述哈希鍵值相同的值,是則不做操作,否則將所述哈希鍵值保存到所述索引哈希鏈表空間中。
6.根據權利要求5所述的裝置,其特征在于, 所述創建模塊,用于在內存模塊中創建包含η個索引區的索引哈希鏈表空間;該η個索引區的序號依次為O η-l ; 所述內存索引壓縮模塊,用于根據第二哈希函數對該內存索引鍵值進行哈希計算,對該哈希計算結果進行模η運算得到O η-l中的一個值,確定序號與該值對應的索引區,查看該確定的索引區中是否已存在與所述哈希鍵值相同的值,如果不存在則將所述哈希鍵值保存到該確定的索引區中。
7.根據權利要求6所述的裝置,其特征在于, 所述內存索引壓縮模塊,用于構建一個索引條目,將構建的索引條目添加到該確定的索引區中;其中,所述索弓I條目包括所述哈希鍵值和一個鏈表指針;所述鏈表指針指向下一個索引條目。
8.根據權利要求6所述的裝置,其特征在于, 所述內存索引壓縮模塊,用于根據第DJB哈希函數對該內存索引鍵值進行哈希計算,得到哈希鍵值; 所述內存索引壓縮模塊,用于根據CRC16哈希函數對該內存索引鍵值進行哈希計算,對該哈希計算結果進行模η 運算得到O η-l中的一個值。
全文摘要
本發明公開一種內存索引壓縮方法和裝置。所述方法包括在內存中創建索引哈希鏈表空間;當有內存索引鍵值需要保存到內存時,根據第一哈希函數對該內存索引鍵值進行哈希計算,得到哈希鍵值;查看所述索引哈希鏈表空間中是否已存在與所述哈希鍵值相同的值,是則不做操作,否則將所述哈希鍵值保存到所述索引哈希鏈表空間中。本發明的技術方案能有效對內存索引進行壓縮,減小內存索引對內存的占用。
文檔編號G06F12/02GK103106144SQ20111036227
公開日2013年5月15日 申請日期2011年11月15日 優先權日2011年11月15日
發明者張雁飛 申請人:北京新媒傳信科技有限公司