數(shù)據(jù)緩存的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)緩存的方法和裝置。
【背景技術(shù)】
[0002]在實(shí)際應(yīng)用中,當(dāng)終端訪問服務(wù)器時(shí),服務(wù)器會(huì)從數(shù)據(jù)庫(kù)中獲取終端需要的數(shù)據(jù)反饋給終端。對(duì)于大型網(wǎng)站或者大型應(yīng)用而言,每時(shí)每刻都有大量的終端訪問網(wǎng)站服務(wù)器或者應(yīng)用服務(wù)器,所以常常存在相同數(shù)據(jù)被頻繁訪問的現(xiàn)象。然而,若對(duì)于終端的每次訪問,服務(wù)器都從存儲(chǔ)有大量數(shù)據(jù)的數(shù)據(jù)庫(kù)中查找,則效率將會(huì)很低。
[0003]因此,為解決上述技術(shù)問題,現(xiàn)有技術(shù)中提出一種分布式緩存系統(tǒng)。其中,最常用的是Memcached緩存系統(tǒng)。具體的,在應(yīng)用服務(wù)器或者網(wǎng)站服務(wù)器側(cè)安裝一個(gè)Memcached客戶端,再部署多個(gè)Memcached服務(wù)器;終端向網(wǎng)站服務(wù)器或者應(yīng)用服務(wù)器請(qǐng)求數(shù)據(jù)時(shí),網(wǎng)站服務(wù)器或者應(yīng)用服務(wù)器會(huì)先查詢Memcached服務(wù)器中是否緩存有該數(shù)據(jù);若有,則從緩存有該數(shù)據(jù)的Memcached服務(wù)器中獲取該數(shù)據(jù),若沒有,則從數(shù)據(jù)庫(kù)中獲取該數(shù)據(jù),并通過分布式算法將從數(shù)據(jù)庫(kù)中獲取的數(shù)據(jù)緩存到對(duì)應(yīng)的Memcached服務(wù)器中,以便后續(xù)網(wǎng)站服務(wù)器或者應(yīng)用服務(wù)器可直接從Memcached服務(wù)器獲取該數(shù)據(jù),而無需訪問數(shù)據(jù)庫(kù)。
[0004]然而,對(duì)于Memcached緩存系統(tǒng)而言,網(wǎng)站服務(wù)器或者應(yīng)用服務(wù)器需要通過網(wǎng)絡(luò)I/0(Input/Output,輸入/輸出)端口才能從Memcached服務(wù)器中獲取需要的數(shù)據(jù),S卩存在跨機(jī)獲取的現(xiàn)象,因此,獲取數(shù)據(jù)的效率較低。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供一種數(shù)據(jù)緩存的方法和裝置,能夠解決現(xiàn)有技術(shù)中Memcached緩存系統(tǒng)中需要跨機(jī)獲取緩存數(shù)據(jù),從而造成效率低的問題。
[0006]—方面,本發(fā)明提供了一種數(shù)據(jù)緩存的方法,所述方法包括:
[0007]在接收到終端發(fā)送的數(shù)據(jù)請(qǐng)求后,從本地的預(yù)設(shè)緩存區(qū)域查找所述數(shù)據(jù)請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù),所述預(yù)設(shè)緩存區(qū)域包括進(jìn)程內(nèi)緩存區(qū)域和/或進(jìn)程間緩存區(qū)域;
[0008]若在所述預(yù)設(shè)緩存區(qū)域中查找到所述目標(biāo)數(shù)據(jù),則將攜帶所述目標(biāo)數(shù)據(jù)的數(shù)據(jù)響應(yīng)發(fā)送給所述終端。
[0009]另一方面,本發(fā)明提供了一種數(shù)據(jù)緩存的裝置,所述裝置包括:
[0010]查找單元,用于在接收到終端發(fā)送的數(shù)據(jù)請(qǐng)求后,從本地的預(yù)設(shè)緩存區(qū)域查找所述數(shù)據(jù)請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù),所述預(yù)設(shè)緩存區(qū)域包括進(jìn)程內(nèi)緩存區(qū)域和/或進(jìn)程間緩存區(qū)域;
[0011 ]發(fā)送單元,用于當(dāng)所述查找單元在所述預(yù)設(shè)緩存區(qū)域中查找到所述目標(biāo)數(shù)據(jù)時(shí),將攜帶所述目標(biāo)數(shù)據(jù)的數(shù)據(jù)響應(yīng)發(fā)送給所述終端。
[0012]借由上述技術(shù)方案,本發(fā)明提供的數(shù)據(jù)緩存的方法和裝置,能夠在接收到終端發(fā)送的數(shù)據(jù)請(qǐng)求后,服務(wù)器直接(例如網(wǎng)站服務(wù)器或者應(yīng)用服務(wù)器)從本地的預(yù)設(shè)緩存區(qū)域(包括進(jìn)程內(nèi)緩存區(qū)域和/或進(jìn)程間緩存區(qū)域)查找該數(shù)據(jù)請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù),并在查找到目標(biāo)數(shù)據(jù)后,將攜帶目標(biāo)數(shù)據(jù)的數(shù)據(jù)響應(yīng)發(fā)送給終端。與現(xiàn)有技術(shù)中需要跨機(jī)查找目標(biāo)數(shù)據(jù)相比,本發(fā)明直接從當(dāng)前服務(wù)器的進(jìn)程內(nèi)緩存區(qū)域或者進(jìn)程間緩存區(qū)域中查找目標(biāo)數(shù)據(jù),而無需通過特定的網(wǎng)絡(luò)I/o端口向其他設(shè)備獲取目標(biāo)數(shù)據(jù),從而提高了獲取數(shù)據(jù)的效率,進(jìn)而提高了終端訪問服務(wù)器的效率。
[0013]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【附圖說明】
[0014]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0015]圖1示出了本發(fā)明實(shí)施例提供的一種數(shù)據(jù)緩存的方法的流程圖;
[0016]圖2示出了本發(fā)明實(shí)施例提供的一種數(shù)據(jù)緩存的裝置的組成框圖;
[0017]圖3示出了本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)緩存的裝置的組成框圖。
【具體實(shí)施方式】
[0018]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0019]本發(fā)明實(shí)施例提供了一種數(shù)據(jù)緩存的方法,如圖1所示,該方法主要包括:
[0020]101、在接收到終端發(fā)送的數(shù)據(jù)請(qǐng)求后,從本地的預(yù)設(shè)緩存區(qū)域查找數(shù)據(jù)請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù),預(yù)設(shè)緩存區(qū)域包括進(jìn)程內(nèi)緩存區(qū)域和/或進(jìn)程間緩存區(qū)域。
[0021]其中,進(jìn)程內(nèi)緩存區(qū)域是指專屬于某進(jìn)程的緩存區(qū)域,即其他進(jìn)程無權(quán)訪問的緩存區(qū)域;進(jìn)程間緩存區(qū)域是指各個(gè)進(jìn)程間共享的緩存區(qū)域。當(dāng)預(yù)設(shè)緩存區(qū)域包括進(jìn)程內(nèi)緩存區(qū)域或者進(jìn)程間緩存區(qū)域時(shí),服務(wù)器可以從當(dāng)前進(jìn)程的進(jìn)程內(nèi)緩存區(qū)域或者進(jìn)程間緩存區(qū)域中查找數(shù)據(jù)請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù);當(dāng)預(yù)設(shè)緩存區(qū)域包括進(jìn)程內(nèi)緩存區(qū)域和進(jìn)程間緩存區(qū)域時(shí),由于從當(dāng)前進(jìn)程的進(jìn)程內(nèi)緩存區(qū)域查找數(shù)據(jù)的速度較快,所以服務(wù)器可以先從當(dāng)前進(jìn)程的進(jìn)程內(nèi)緩存區(qū)域中查找目標(biāo)數(shù)據(jù),若在當(dāng)前進(jìn)程的進(jìn)程內(nèi)緩存區(qū)域查不到目標(biāo)數(shù)據(jù),再?gòu)倪M(jìn)程間緩存區(qū)域中查找目標(biāo)數(shù)據(jù)。
[0022]需要說明的是,在實(shí)際應(yīng)用中,進(jìn)程內(nèi)緩存區(qū)域?qū)?yīng)的進(jìn)程內(nèi)緩存機(jī)制可以為L(zhǎng)RU(Least Recently Used,近期最少使用)緩存,S卩當(dāng)進(jìn)程內(nèi)緩存區(qū)域沒有剩余存儲(chǔ)空間時(shí),可以將近期最少使用的數(shù)據(jù)(即近期用戶訪問次數(shù)最少的數(shù)據(jù))刪除,然后存儲(chǔ)新獲取的數(shù)據(jù)。進(jìn)程間緩存區(qū)域?qū)?yīng)的進(jìn)程間緩存機(jī)制可以為Shared Dictd Cache和Shared ListCache。此外,進(jìn)程間緩存區(qū)域可以設(shè)置一個(gè),也可以設(shè)置多個(gè),在此不作限定。
[0023]102、若在預(yù)設(shè)緩存區(qū)域中查找到目標(biāo)數(shù)據(jù),則將攜帶目標(biāo)數(shù)據(jù)的數(shù)據(jù)響應(yīng)發(fā)送給終端。
[0024]當(dāng)在當(dāng)前進(jìn)程的進(jìn)程內(nèi)緩存區(qū)域或者進(jìn)程間緩存區(qū)域查找到目標(biāo)數(shù)據(jù)時(shí),服務(wù)器可以先獲取查找到的目標(biāo)數(shù)據(jù),再生成攜帶該目標(biāo)數(shù)據(jù)的數(shù)據(jù)響應(yīng),最后將該數(shù)據(jù)響應(yīng)發(fā)送給終端,以便終端根據(jù)數(shù)據(jù)響應(yīng)中攜帶的目標(biāo)數(shù)據(jù)進(jìn)行后續(xù)操作。
[0025]本發(fā)明實(shí)施例提供的數(shù)據(jù)緩存的方法,能夠在接收到終端發(fā)送的數(shù)據(jù)請(qǐng)求后,月艮務(wù)器直接(例如網(wǎng)站服務(wù)器或者應(yīng)用服務(wù)器)從本地的預(yù)設(shè)緩存區(qū)域(包括進(jìn)程內(nèi)緩存區(qū)域和/或進(jìn)程間緩存區(qū)域)查找該數(shù)據(jù)請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù),并在查找到目標(biāo)數(shù)據(jù)后,將攜帶目標(biāo)數(shù)據(jù)的數(shù)據(jù)響應(yīng)發(fā)送給終端。與現(xiàn)有技術(shù)中需要跨機(jī)查找目標(biāo)數(shù)據(jù)相比,本發(fā)明直接從當(dāng)前服務(wù)器的進(jìn)程內(nèi)緩存區(qū)域或者進(jìn)程間緩存區(qū)域中查找目標(biāo)數(shù)據(jù),而無需通過特定的網(wǎng)絡(luò)I/O端口向其他設(shè)備獲取目標(biāo)數(shù)據(jù),從而提高了獲取數(shù)據(jù)的效率,進(jìn)而提高了終端訪問服務(wù)器的效率。
[0026]進(jìn)一步的,上述步驟102的具體實(shí)現(xiàn)方式可以分為兩種:
[0027]方式一:若在當(dāng)前進(jìn)程的進(jìn)程內(nèi)緩存區(qū)域中查找到目標(biāo)數(shù)據(jù),則將攜帶目標(biāo)數(shù)據(jù)的數(shù)據(jù)響應(yīng)發(fā)送給終端。
[0028]由于進(jìn)