第二 KV的Key進行所述特定運算的運算結果匹配的存儲地址與該存儲地址存儲的Value對應的Key運算結果匹配的存儲地址相同,即針對這兩個KV的運算結果存在沖突。
[0093]例如:第一 KV的Key為1005,第二 KV的Key為2005,當這兩個KV都采用如圖4所示的存儲實現(xiàn)方式中,那么,如圖5所示,第一 KV匹配的存儲地址與第二 KV匹配的存儲地址都為第5個存儲地址。當先存儲第一 KV的Value時,那么,再存儲第二 KV的Value時,就會發(fā)現(xiàn)第一 KV和第二 KV存在沖突問題,從而在空閑存儲地址中存儲第二 KV的Value。如圖6所示,查找第10存儲地址為空閑地址,從而將第二 KV的Value存儲至第10個存儲地址中,再將第二 KV的Value存儲至第10個存儲地址的信息添加到第5個存儲的二次映射表中。
[0094]另外,在該實施方式中,上述特定位置可以是存儲地址中預先劃分的用于存儲沖突KV的存儲地址信息的位置,例如:存儲地址的頭部。另外,可以如圖6所示,可以二次映射表的方式存儲。且在特定位置存儲時可以存儲第二 KV的Value的存儲地址信息,還可以存儲第二 KV的Key,以知道該存儲地址信息就可以存儲第二 KV的Value的地址信息。這樣可以解決,當多個KV沖突時,可以在同一個特定位置中存儲多個Value的存儲地址信息。
[0095]該實施方式中,上述查找存儲介質的空閑存儲地址,并將所述第二 KV的Value存儲至所述空閑存儲地址的步驟,可以包括:
[0096]在所述存儲介質的特定區(qū)域中查找空閑存儲地址,并將所述第二 KV的Value存儲至所述空閑存儲地址,其中,所述特定區(qū)域為所述存儲介質中預先設置的用于存儲運算結果沖突的KV的Value。
[0097]該實現(xiàn)方式中,可以實現(xiàn)設置一個特定區(qū)域專門用于存儲運算結果沖突的KV的Value,以減少沖突問題,因為該特定區(qū)域的存儲地址可以是不與任意KV的運算結果匹配。
[0098]需要說明的是,本實施例中,第一 KV和第二 KV僅是用于區(qū)分這是兩個不同的KV,例如:第一 KV可以KV存儲系統(tǒng)中的任意KV,而第二 KV可以是KV存儲系統(tǒng)中除第一 KV之外的任意KV。
[0099]本實施例中,在圖1所示的實施例的基礎上增加了多種可選的實施方式,都可以實現(xiàn)減少KV存儲技術中的10次數(shù)。
[0100]下面為本發(fā)明裝置實施例,本發(fā)明裝置實施例用于執(zhí)行本發(fā)明方法實施例一至二實現(xiàn)的方法,為了便于說明,僅示出了與本發(fā)明實施例相關的部分,具體技術細節(jié)未揭示的,請參照本發(fā)明實施例一和實施例二。
[0101]請參閱圖7,圖7是本發(fā)明實施例提供的一種KV存儲實現(xiàn)裝置的結構示意圖,如圖7所示,包括:第一運算單元71、存儲單元72、第二運算單元73和讀取單元74,其中:
[0102]第一運算單元71,用于當需要對第一 KV進行存儲時,對所述第一 KV的鍵Key進行特定運算,獲取運算結果。
[0103]存儲單元72,用于將所述第一 KV的值Value存儲至存儲介質中所述運算結果匹配的存儲地址。
[0104]第二運算單元73,用于當需要對所述第一 KV進行讀取時,對所述第一 KV的Key進行所述特定運算,獲取所述運算結果。
[0105]讀取單元74,用于在所述存儲介質中所述運算結果匹配的所述存儲地址中讀取所述第一 KV的Value。
[0106]需要說明的是,本實施例提供的KV存儲實現(xiàn)裝置可以應用于分布式存儲系統(tǒng)中。另外,本實施例提供的KV存儲實現(xiàn)裝置也可以應用于非分布式存儲系統(tǒng)。
[0107]本實施例中,當需要對第一 KV進行存儲時,對所述第一 KV的鍵Key進行特定運算,獲取運算結果;將所述第一 KV的值Value存儲至存儲介質中所述運算結果匹配的存儲地址;當需要對所述第一 KV進行讀取時,對所述第一 KV的Key進行所述特定運算,獲取所述運算結果;在所述存儲介質中所述運算結果匹配的所述存儲地址中讀取所述第一 KV的Value。從而可以實現(xiàn)在對KV進行存儲和讀取操作時都只進行一次10操作,從而可以減少KV存儲技術中10操作次數(shù)。
[0108]請參閱圖8,圖8是本發(fā)明實施例提供的另一種KV存儲實現(xiàn)裝置的結構示意圖,如圖8所示,包括:分配單元81、第一運算單元82、存儲單元83、第二運算單元84和讀取單元85,其中:
[0109]分配單元81,用于將所述存儲介質按照地址空間劃分為若干個存儲地址,并為每個存儲地址分配一個標識,其中,所述運算結果匹配的存儲地址包括標識與所述運算結果匹配的存儲地址。
[0110]第一運算單元82,用于當需要對第一 KV進行存儲時,對所述第一 KV的鍵Key進行特定運算,獲取運算結果。
[0111]存儲單元83,用于將所述第一 KV的值Value存儲至存儲介質中所述運算結果匹配的存儲地址。
[0112]第二運算單元84,用于當需要對所述第一 KV進行讀取時,對所述第一 KV的Key進行所述特定運算,獲取所述運算結果。
[0113]讀取單元85,用于在所述存儲介質中所述運算結果匹配的所述存儲地址中讀取所述第一 KV的Value。
[0114]本實施例中,第一運算單元82還可以用于當需要對第二 KV進行存儲時,對所述第二 KV的Key進行所述特定運算,獲取運算結果;
[0115]存儲單元83還可以用于當對所述第二 KV的Key進行所述特定運算的運算結果匹配的存儲地址存儲有Value時,查找所述存儲介質的空閑存儲地址,并將所述第二 KV的Value存儲至所述空閑存儲地址;
[0116]存儲單元83還可以用于將所述空閑存儲地址的地址信息添加至對所述第二 KV的Key進行所述特定運算的運算結果匹配的存儲地址的特定位置;
[0117]第二運算單元84還可以用于當需要對所述第二 KV進行讀取時,對所述第二 KV的Key進行所述特定運算,獲取運算結果;
[0118]讀取單元85還可以用于在對所述第二 KV的Key進行所述特定運算的運算結果匹配的存儲地址的特定位置讀取所述空閑存儲地址,并在所述空閑存儲地址讀取所述第二 KV的 Value。
[0119]該實施方式中,存儲單元83可以用于在所述存儲介質的特定區(qū)域中查找空閑存儲地址,并將所述第二 KV的Value存儲至所述空閑存儲地址,其中,所述特定區(qū)域為所述存儲介質中預先設置的用于存儲運算結果沖突的KV的Value。
[0120]本實施例中,第一運算單元82可以用于使用預先設置的公式對所述第一 KV的Key進行運算,獲取運算結果;或者
[0121]第一運算單元82可以用于使用預先設置的公式對所述第一 KV的Key和所述存儲介質的參數(shù)進行運算,獲取運算結果。
[0122]本實施例中,在圖7所示的實施例的基礎上增加了多種可選的實施方式,都可以實現(xiàn)減少KV存儲技術中的10次數(shù)。
[0123]請參閱圖9,圖9是本發(fā)明實施例提供的另一種KV存儲實現(xiàn)裝置的結構示意圖,如圖9所示,包括:處理器91、網(wǎng)絡接口 92、存儲器93和通信總線94,其中,所述通信總線94用于實現(xiàn)所述處理器91、網(wǎng)絡接口 92和存儲器93之間連接通信,所述處理器91執(zhí)行所述存儲器93中存儲的程序用于實現(xiàn)以下方法:
[0124]當需要對第一 KV進行存儲時,對所述第一 KV的鍵Key進行特定運算,獲取運算結果;
[0125]將所述第一 KV的值Value存儲至存儲介質中所述運算結果匹配的存儲地址;
[0126]當需要對所述第一 KV進行讀取時,對所述第一 KV的Key進行所述特定運算,獲取所述運算結果;
[0127]在所述存儲介質中所述運算結果匹配的所述存儲地址中讀取所述第一 KV的Value0
[0128]本實施例中,處理器91執(zhí)行的程序還可以包括:
[0129]將所述存儲介質按照地址空間劃分為若干個存儲地址,并為每個存儲地址分配一個標識,其中,所述運算結果匹配的存儲地址包括標識與所述運算結果匹配的存儲地址。
[0130]本實施例中,處理器91執(zhí)行的程序還可以包括:
[0131]當需要對第二 KV進行存儲時,對所述第二 KV的Key進行所述特定運算,獲取運算結果;
[013...