,在本發(fā)明的一些 實(shí)施例中,多個(gè)數(shù)據(jù)元素之間也可以具有某種關(guān)聯(lián),在這一情形下,可以利用同一鍵值來(lái)標(biāo) 記相互關(guān)聯(lián)的多個(gè)數(shù)據(jù)元素,從而形成了具有鏈特性的一條數(shù)據(jù)記錄。在上述場(chǎng)景下,若業(yè) 務(wù)服務(wù)器所需訪問(wèn)的數(shù)據(jù)從屬于某一條數(shù)據(jù)記錄,則可以將該數(shù)據(jù)記錄的鍵值作為數(shù)據(jù)標(biāo) 識(shí),從而顯著地縮小了緩存服務(wù)器所執(zhí)行的查找操作的查找范圍。
[0057] 例如,對(duì)于表1所示的數(shù)據(jù)元素來(lái)說(shuō),該數(shù)據(jù)元素可以如前述實(shí)施例中所描述的, 用來(lái)記錄與某一用戶相關(guān)的信息,在另一實(shí)施例中,該表1所示的數(shù)據(jù)元素也可以用來(lái)記 錄與業(yè)務(wù)所面向的某一用戶相關(guān)的多個(gè)其他用戶的用戶信息,比如對(duì)于一款社交應(yīng)用來(lái) 說(shuō),其所生產(chǎn)的業(yè)務(wù)數(shù)據(jù)既可以包括該應(yīng)用的每個(gè)用戶的信息,也可以包括每個(gè)用戶所設(shè) 置的社交好友的信息,從而表1所示的數(shù)據(jù)元素可以用來(lái)記錄某一好友的用戶信息,如該 好友的用戶ID、注冊(cè)時(shí)間和活動(dòng)狀態(tài)等,并且該好友的這些信息可以在緩存中標(biāo)記為與該 用戶對(duì)應(yīng)。在上述場(chǎng)景下,若業(yè)務(wù)服務(wù)器所需提取的數(shù)據(jù)是某一用戶的滿足特定條件的好 友的信息,則業(yè)務(wù)服務(wù)器可以向緩存服務(wù)器發(fā)送該用戶的用戶ID作為數(shù)據(jù)標(biāo)識(shí),從而使得 緩存服務(wù)器在該數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)的范圍內(nèi)查找,這將顯著地提升查找速度,并且為業(yè)務(wù)服務(wù) 器提供了更為便捷的訪問(wèn)配置接口。
[0058] 當(dāng)然,上述實(shí)施例僅提供了可行的實(shí)施方式之一,并非本發(fā)明全部的實(shí)施方式。例 如,在本發(fā)明的一些實(shí)施例中,業(yè)務(wù)服務(wù)器發(fā)送的請(qǐng)求查詢數(shù)據(jù)元素的消息中也可以不攜 帶有業(yè)務(wù)標(biāo)識(shí),而是預(yù)先通過(guò)業(yè)務(wù)服務(wù)器向緩存服務(wù)器的接入來(lái)判斷出具體是哪個(gè)業(yè)務(wù)需 要訪問(wèn)緩存數(shù)據(jù),進(jìn)而也可以將數(shù)據(jù)元素的查找范圍縮小到與接入的該業(yè)務(wù)對(duì)應(yīng)的數(shù)據(jù)記 錄。
[0059] 進(jìn)一步可選地,在本發(fā)明實(shí)施例中,在步驟S104之前,上述查找方法還可以包括:
[0060]S14 :判斷緩存中的數(shù)據(jù)元素是否滿足淘汰條件;
[0061]S16:若緩存中的數(shù)據(jù)元素滿足淘汰條件,則將滿足判斷條件的數(shù)據(jù)元素從緩存中 清除、并轉(zhuǎn)存到讀取速度慢于緩存的存儲(chǔ)器中。
[0062] 類似于為本領(lǐng)域技術(shù)人員所知的緩存數(shù)據(jù)的淘汰處理方式,在本發(fā)明實(shí)施例中, 也可以對(duì)緩存的數(shù)據(jù)元素采用多種可行的算法進(jìn)行淘汰,以便于將訪問(wèn)頻率下降的數(shù)據(jù)元 素淘汰出局,達(dá)到提高緩存的使用效率的目的。例如,作為可行的實(shí)施方式之一,在本發(fā)明 實(shí)施例中,上述步驟S14可以包括:
[0063]S18 :判斷緩存中的數(shù)據(jù)元素的前次訪問(wèn)時(shí)間與當(dāng)前時(shí)間之間的時(shí)間間隔是否大 于等于第一閾值,和/或,判斷緩存中的數(shù)據(jù)元素在當(dāng)前時(shí)間之前的預(yù)設(shè)時(shí)長(zhǎng)內(nèi)的訪問(wèn)次 數(shù)是否小于等于第二閾值;
[0064]S20 :若時(shí)間間隔大于等于第一閾值和/或訪問(wèn)次數(shù)小于等于第二閾值,則判斷出 滿足淘汰條件。
[0065] 需要說(shuō)明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列 的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)?依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知 悉,說(shuō)明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明 所必須的。
[0066] 通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施 例的方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多 情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有 技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ) 介質(zhì)(如R0M/RAM、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì) 算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0067] 實(shí)施例2
[0068] 根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述緩存數(shù)據(jù)查找方法的緩存數(shù)據(jù)查 找裝置,如圖3所示,該裝置包括:
[0069] 1)獲取單元302,用于獲取用于對(duì)緩存中的數(shù)據(jù)元素進(jìn)行查找的查詢條件,其中, 緩存中的每個(gè)數(shù)據(jù)元素包括一個(gè)或多個(gè)字段,每個(gè)字段包括字段類型和字段值,查詢條件 用于指示待查找的字段類型和待查找的字段值;
[0070] 2)查找單元304,用于在緩存中查找具有滿足查詢條件的字段的數(shù)據(jù)元素;
[0071] 3)輸出單元306,用于在查找到具有滿足查詢條件的字段的數(shù)據(jù)元素時(shí),從緩存 中讀出查找到的數(shù)據(jù)元素。
[0072] 應(yīng)當(dāng)明確的是,本發(fā)明實(shí)施例所要解決的問(wèn)題之一是提供一種裝置,以便于實(shí)現(xiàn) 對(duì)緩存的數(shù)據(jù)進(jìn)行有效查找。
[0073] 具體地,在本發(fā)明實(shí)施例中,緩存可以表示對(duì)數(shù)據(jù)的一種存儲(chǔ)方式,其中,相比于 在磁盤存儲(chǔ)器等落地式存儲(chǔ)設(shè)備中存儲(chǔ)的數(shù)據(jù)來(lái)說(shuō),緩存的數(shù)據(jù)可以被相對(duì)快速地寫入或 讀出。根據(jù)數(shù)據(jù)局部性原理,由于訪問(wèn)過(guò)的數(shù)據(jù)通常會(huì)被再次訪問(wèn),因此可以將訪問(wèn)頻率較 高的部分?jǐn)?shù)據(jù)緩存起來(lái),進(jìn)而具體業(yè)務(wù)的執(zhí)行單元如處理器或服務(wù)器等可以優(yōu)先訪問(wèn)緩存 中提取數(shù)據(jù),這樣就加快了數(shù)據(jù)訪問(wèn)速度。
[0074] 由此可見(jiàn),緩存數(shù)據(jù)的目的是為了業(yè)務(wù)對(duì)其所需的緩存中的具體某個(gè)數(shù)據(jù)進(jìn)行查 找,為達(dá)到這一目的,為發(fā)明人所知的常用的緩存數(shù)據(jù)的查找方式之一是利用物理地址直 接在緩存中讀寫數(shù)據(jù)。一般來(lái)說(shuō),利用物理地址讀寫數(shù)據(jù)通??梢詫?shí)現(xiàn)較高的讀寫速度,然 而由于緩存數(shù)據(jù)的物理地址對(duì)于業(yè)務(wù)來(lái)說(shuō)通常是不透明的,或者說(shuō)業(yè)務(wù)無(wú)法識(shí)別在哪個(gè)物 理地址上存放的數(shù)據(jù)是業(yè)務(wù)所需的具有特定意義的數(shù)據(jù)。因此,作為一種改進(jìn)的方式,用于 管理緩存讀寫的設(shè)備可以維護(hù)有一張映射表,該映射表中記錄有為業(yè)務(wù)所知的標(biāo)識(shí)項(xiàng)與緩 存數(shù)據(jù)的物理地址之間的映射關(guān)系,從而業(yè)務(wù)可以通過(guò)預(yù)先定義的標(biāo)識(shí)項(xiàng)對(duì)緩存中的數(shù)據(jù) 進(jìn)行讀與。
[0075] 然而,上述查找方式及其對(duì)應(yīng)的緩存數(shù)據(jù)的管理方式并不利于體現(xiàn)出多個(gè)數(shù)據(jù)之 間的關(guān)聯(lián),例如,若業(yè)務(wù)需要查找某一用戶的相關(guān)信息,并且該相關(guān)信息包括多個(gè)方面的信 息,則業(yè)務(wù)通常需要先解析出該相關(guān)信息所包含的多個(gè)數(shù)據(jù)項(xiàng)以及多個(gè)數(shù)據(jù)項(xiàng)各自對(duì)應(yīng)的 標(biāo)識(shí)項(xiàng),進(jìn)而通知緩存管理相對(duì)獨(dú)立地查找出各標(biāo)識(shí)項(xiàng)所標(biāo)識(shí)的數(shù)據(jù)。顯然,這對(duì)業(yè)務(wù)自身 的功能提出了更高的要求,并且在大規(guī)模的數(shù)據(jù)讀取的背景下,會(huì)顯著地影響到業(yè)務(wù)的執(zhí) 行效率。
[0076] 為解決這一問(wèn)題,在本發(fā)明實(shí)施例中,可以結(jié)合對(duì)緩存數(shù)據(jù)的結(jié)構(gòu)的進(jìn)一步定義, 以提供基于查詢條件對(duì)緩存中的一個(gè)或多個(gè)數(shù)據(jù)進(jìn)行查找的功能。具體地,在本發(fā)明實(shí)施 例中,采用了數(shù)據(jù)元素的形式實(shí)現(xiàn)對(duì)相互關(guān)聯(lián)的數(shù)據(jù)的存儲(chǔ),其中,每個(gè)數(shù)據(jù)元素可以包括 多個(gè)字段,每個(gè)字段可以包括字段類型和字段值,相互關(guān)聯(lián)的業(yè)務(wù)數(shù)據(jù)可以作為不同的字 段值存入緩存中的每個(gè)數(shù)據(jù)元素中,進(jìn)而業(yè)務(wù)需要獲取該相互關(guān)聯(lián)的業(yè)務(wù)數(shù)據(jù)時(shí),則可以 基于特定的查詢條件查找到包括特定的業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)元素,并且,由于業(yè)務(wù)預(yù)先向緩存 中存入數(shù)據(jù)或者說(shuō)字段值時(shí),可以提前配置對(duì)應(yīng)的字段類型,因此緩存中的業(yè)務(wù)數(shù)據(jù)對(duì)于 業(yè)務(wù)來(lái)說(shuō)是透明的。通過(guò)上述方式,便可以簡(jiǎn)化業(yè)務(wù)側(cè)的查詢操作,比如業(yè)務(wù)服務(wù)器可以僅 向緩存管理發(fā)送查詢條件,便可以獲取到所需的業(yè)務(wù)數(shù)據(jù),從而提高了業(yè)務(wù)的執(zhí)行效率,進(jìn) 而解決了在現(xiàn)有的緩存數(shù)據(jù)的查找方式下業(yè)務(wù)訪問(wèn)緩存數(shù)據(jù)時(shí)需要執(zhí)行較為復(fù)雜的邏輯 從而導(dǎo)致的業(yè)務(wù)執(zhí)行效率較低的技術(shù)問(wèn)題。
[0077] 下面將結(jié)合附圖和具體的實(shí)施例對(duì)本發(fā)明技術(shù)方案及其工作原理進(jìn)行更為詳細(xì) 的描述。首先結(jié)合圖2對(duì)本發(fā)明的技術(shù)方案的實(shí)施環(huán)境進(jìn)行示例性地描述。
[0078] 圖2示出了根據(jù)本發(fā)明實(shí)施例提供的查找裝置的一種可行的實(shí)施環(huán)境。如圖2所 示,在本發(fā)明實(shí)施例中,業(yè)務(wù)服務(wù)器202與緩存服務(wù)器204之間存在數(shù)據(jù)連接,以便于業(yè)務(wù) 服務(wù)器202在需要在設(shè)置于緩存服務(wù)器204的緩存中讀寫數(shù)據(jù)時(shí),通過(guò)向緩存服務(wù)器204 發(fā)送的讀寫指令指示緩存服務(wù)器204執(zhí)行對(duì)應(yīng)的處理操作,其中,上述查找裝置可以設(shè)置 在緩存服務(wù)器202上。進(jìn)一步可選地,在本發(fā)明實(shí)施例中,還可以設(shè)置有落地式存儲(chǔ)服務(wù)器 206,與緩存服務(wù)器204之間存在數(shù)據(jù)連接,以便于在緩存空間不足時(shí)淘汰掉部分訪問(wèn)頻率 較低的數(shù)據(jù),并將淘汰掉的數(shù)據(jù)轉(zhuǎn)存到相對(duì)于緩存讀寫速度較慢、成本較低的落地式存儲(chǔ) 服務(wù)器206上,當(dāng)緩存服務(wù)器204未緩存有業(yè)務(wù)服務(wù)器202所訪問(wèn)的數(shù)據(jù)時(shí),則可以訪問(wèn)落 地式存儲(chǔ)服務(wù)器206,并將查找到的數(shù)據(jù)返回給業(yè)務(wù)服務(wù)器202。
[0079] 具體地,在本發(fā)明實(shí)施例中,業(yè)務(wù)服務(wù)器可以具體用于執(zhí)行某些類型的業(yè)務(wù),比如 查詢業(yè)務(wù)、繳費(fèi)業(yè)務(wù)、游戲業(yè)務(wù)等,或者是對(duì)這些業(yè)務(wù)的進(jìn)一步細(xì)分,如游戲業(yè)務(wù)中的聊天 業(yè)務(wù)、數(shù)據(jù)業(yè)務(wù)等。然而本發(fā)明對(duì)此不作任何限定,上述各實(shí)施方式并不影響本發(fā)明技術(shù)方 案的實(shí)施及其技術(shù)效果的實(shí)現(xiàn),類似的實(shí)施方式均應(yīng)視為在本發(fā)明的保護(hù)范圍之內(nèi)。值得 注意的是,在本發(fā)明實(shí)施例中,業(yè)務(wù)服務(wù)器既可以表示執(zhí)行具體業(yè)務(wù)的服務(wù)器應(yīng)用,也可以 表示能夠?qū)崿F(xiàn)這一功能的計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng),本發(fā)明對(duì)此不作限定。
[0080] 類似地,在本發(fā)明實(shí)施例中,緩存服務(wù)器可以表示用于對(duì)緩存及緩存數(shù)據(jù)進(jìn)行管 理的服務(wù)器應(yīng)用,也可以表示能夠?qū)崿F(xiàn)這一功能的計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)。一般地,緩存區(qū)可 以與緩存服務(wù)器設(shè)置在同一設(shè)備或系統(tǒng)上,然而本發(fā)明對(duì)此不作限定,例如,在一些實(shí)施例 中,緩存區(qū)也可以設(shè)置在其他存儲(chǔ)設(shè)備上,且該存儲(chǔ)設(shè)備與緩存服務(wù)器之間存在數(shù)據(jù)連接。
[0081] 在上述環(huán)境下根據(jù)本發(fā)明實(shí)施例提供的緩存數(shù)據(jù)查找裝置通過(guò)獲取單元302,緩 存服務(wù)器可以先獲取用于對(duì)緩存中的數(shù)據(jù)元素進(jìn)行查找的查詢條件。一般地,上述查詢條 件通??梢詳y帶在業(yè)務(wù)服務(wù)器向緩存服務(wù)器發(fā)送的用于請(qǐng)求訪問(wèn)緩存中的數(shù)據(jù)元素的消 息中,然而本發(fā)明對(duì)此不作限定。例如,在一些實(shí)施例中,查詢條件也可以緩存起來(lái),也即上 述查詢條件也可以從緩存區(qū)獲取,在上述場(chǎng)景下。業(yè)務(wù)服務(wù)器通過(guò)與緩存服務(wù)器預(yù)先約定 的某些指令便可以指示緩存服務(wù)器按預(yù)先緩存的查詢條件對(duì)數(shù)據(jù)元素進(jìn)行查詢,從而進(jìn)一 步地簡(jiǎn)化業(yè)務(wù)服務(wù)器側(cè)的執(zhí)行邏輯。