一種數(shù)據(jù)存儲(chǔ)方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,更具體而言,涉及一種數(shù)據(jù)存儲(chǔ)方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]在網(wǎng)絡(luò)搜索時(shí)代,當(dāng)用戶通過(guò)客戶端查詢信息時(shí),客戶端將查詢請(qǐng)求發(fā)送到各個(gè)項(xiàng)目服務(wù)器,例如,小說(shuō)服務(wù)器、圖片服務(wù)器、視頻服務(wù)器等,各個(gè)項(xiàng)目服務(wù)器根據(jù)用戶輸入的信息在數(shù)據(jù)庫(kù)中讀取相應(yīng)數(shù)據(jù),并作為查詢結(jié)果數(shù)據(jù)發(fā)送到客戶端進(jìn)行顯示。由此可見,用戶每次查詢信息,項(xiàng)目服務(wù)器都要訪問數(shù)據(jù)庫(kù),而數(shù)據(jù)庫(kù)所存儲(chǔ)的數(shù)據(jù)量龐大,從而降低了動(dòng)態(tài)web應(yīng)用的速度。為了減少訪問數(shù)據(jù)庫(kù)的次數(shù),引入了 Memcached緩存系統(tǒng),Memcached是一種分布式內(nèi)存緩存系統(tǒng),當(dāng)項(xiàng)目服務(wù)器從數(shù)據(jù)庫(kù)中讀取到查詢結(jié)果數(shù)據(jù)后,將查詢結(jié)果數(shù)據(jù)發(fā)送并存儲(chǔ)到Memcached緩存系統(tǒng)中,當(dāng)項(xiàng)目服務(wù)器再次接收到查詢請(qǐng)求時(shí),能夠從Memcached緩存系統(tǒng)中讀取數(shù)據(jù),從而避免訪問數(shù)據(jù)庫(kù)。
[0003]通常,Memcached緩存系統(tǒng)以鍵/值對(duì)的方式存儲(chǔ)數(shù)據(jù),項(xiàng)目服務(wù)器在將待存儲(chǔ)數(shù)據(jù)發(fā)送到Memcached緩存系統(tǒng)之前,自定義生成鍵值,然后,將鍵值與數(shù)據(jù)一同發(fā)送到Memcached緩存系統(tǒng)進(jìn)行保存。由于通過(guò)鍵/值對(duì)的方式存儲(chǔ)數(shù)據(jù),Memcached緩存系統(tǒng)查詢數(shù)據(jù)時(shí),根據(jù)數(shù)據(jù)對(duì)應(yīng)的鍵值進(jìn)行,具體的,當(dāng)項(xiàng)目服務(wù)器讀取、修改、更新或者刪除某數(shù)據(jù)時(shí),將該數(shù)據(jù)的鍵值發(fā)送到Memcached緩存系統(tǒng),Memcached緩存系統(tǒng)在所存儲(chǔ)的數(shù)據(jù)中,查找與所接收的鍵值相同的鍵值,然后再讀取該鍵值對(duì)應(yīng)的數(shù)據(jù),并對(duì)所讀取的數(shù)據(jù)執(zhí)行相應(yīng)的操作。
[0004]然而,由于Memcached緩存系統(tǒng)對(duì)應(yīng)存儲(chǔ)多個(gè)項(xiàng)目的數(shù)據(jù),每個(gè)項(xiàng)目均包含多個(gè)數(shù)據(jù),而數(shù)據(jù)的鍵值由不同的項(xiàng)目服務(wù)器自定義生成,因此,經(jīng)常出現(xiàn)多個(gè)不同的數(shù)據(jù)對(duì)應(yīng)一個(gè)相同鍵值的情況,從而造成緩存系統(tǒng)對(duì)數(shù)據(jù)產(chǎn)生誤操作,使得Memcached緩存系統(tǒng)管理混亂,影響數(shù)據(jù)的正常使用。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法、裝置及系統(tǒng),對(duì)應(yīng)每個(gè)數(shù)據(jù)生成唯一的鍵值,從而能夠避免誤操作的產(chǎn)生,使得緩存系統(tǒng)能夠正常管理數(shù)據(jù),保證數(shù)據(jù)的正常使用。
[0006]第一方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)存儲(chǔ)方法,包括中間服務(wù)器接收項(xiàng)目服務(wù)器發(fā)送的數(shù)據(jù)存儲(chǔ)請(qǐng)求,所述數(shù)據(jù)存儲(chǔ)請(qǐng)求包括待存儲(chǔ)數(shù)據(jù)、數(shù)據(jù)標(biāo)識(shí)和預(yù)設(shè)的項(xiàng)目標(biāo)識(shí);根據(jù)所述數(shù)據(jù)標(biāo)識(shí)和所述項(xiàng)目標(biāo)識(shí)生成所述待存儲(chǔ)數(shù)據(jù)的鍵值;將所述鍵值與所述待存儲(chǔ)數(shù)據(jù)發(fā)送并存儲(chǔ)到緩存系統(tǒng)。
[0007]在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述數(shù)據(jù)標(biāo)識(shí)和所述項(xiàng)目標(biāo)識(shí)生成所述待存儲(chǔ)數(shù)據(jù)的鍵值包括:為所述項(xiàng)目標(biāo)識(shí)設(shè)置版本號(hào);以所述版本號(hào)、所述數(shù)據(jù)標(biāo)識(shí)和所述項(xiàng)目標(biāo)識(shí)為參數(shù),按照預(yù)設(shè)算法生成所述待存儲(chǔ)數(shù)據(jù)的鍵值。
[0008]結(jié)合上述第一方面,在第二種可能的實(shí)現(xiàn)方式中,在為所述項(xiàng)目標(biāo)識(shí)設(shè)置版本號(hào)之后,還包括:將所述項(xiàng)目標(biāo)識(shí)確定為所述版本號(hào)的鍵值;將所述版本號(hào)和所述版本號(hào)的鍵值發(fā)送并存儲(chǔ)到所述緩存系統(tǒng),以便于在讀取所述待存儲(chǔ)數(shù)據(jù)時(shí),從緩存系統(tǒng)中獲取所述版本號(hào)生成所述待存儲(chǔ)數(shù)據(jù)的鍵值。
[0009]結(jié)合上述第一方面,在第三種可能的實(shí)現(xiàn)方式中,還包括:接收所述項(xiàng)目服務(wù)器的數(shù)據(jù)讀取請(qǐng)求,所述數(shù)據(jù)讀取請(qǐng)求包括所述數(shù)據(jù)標(biāo)識(shí)和所述項(xiàng)目標(biāo)識(shí);將所述項(xiàng)目標(biāo)識(shí)發(fā)送到所述緩存系統(tǒng),并接收所述緩存系統(tǒng)根據(jù)所述項(xiàng)目標(biāo)識(shí)讀取的所述版本號(hào);以所述版本號(hào)、所述數(shù)據(jù)標(biāo)識(shí)和所述項(xiàng)目標(biāo)識(shí)為參數(shù),按照預(yù)設(shè)算法生成所述待存儲(chǔ)數(shù)據(jù)的鍵值;將所述鍵值發(fā)送到所述緩存系統(tǒng),并接收所述緩存系統(tǒng)根據(jù)所述鍵值讀取的所述數(shù)據(jù);將所述數(shù)據(jù)發(fā)送到所述項(xiàng)目服務(wù)器。
[0010]結(jié)合上述第一方面,在第四種可能的實(shí)現(xiàn)方式中,還包括:接收所述項(xiàng)目服務(wù)器發(fā)送的數(shù)據(jù)清空請(qǐng)求,所述數(shù)據(jù)清空請(qǐng)求中包括所述項(xiàng)目標(biāo)識(shí);生成所述項(xiàng)目標(biāo)識(shí)的新版本號(hào);將所述新版本號(hào)發(fā)送到所述緩存系統(tǒng),以使用所述新版本號(hào)替換已存儲(chǔ)的原版本號(hào)。
[0011]結(jié)合上述第一方面,在第五種可能的實(shí)現(xiàn)方式中,在接收項(xiàng)目服務(wù)器發(fā)送的數(shù)據(jù)存儲(chǔ)請(qǐng)求之前,還包括:接收所述項(xiàng)目服務(wù)器發(fā)送的項(xiàng)目名稱;根據(jù)所述項(xiàng)目名稱生成所述項(xiàng)目標(biāo)識(shí);將所述項(xiàng)目標(biāo)識(shí)發(fā)送到所述項(xiàng)目服務(wù)器。
[0012]第二方面,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)存儲(chǔ)裝置,包括:接收模塊,用于接收項(xiàng)目服務(wù)器發(fā)送的數(shù)據(jù)存儲(chǔ)請(qǐng)求,所述數(shù)據(jù)存儲(chǔ)請(qǐng)求包括待存儲(chǔ)數(shù)據(jù)、數(shù)據(jù)標(biāo)識(shí)和預(yù)設(shè)的項(xiàng)目標(biāo)識(shí);生成模塊,用于根據(jù)所述接收模塊接收的數(shù)據(jù)標(biāo)識(shí)和所述項(xiàng)目標(biāo)識(shí)生成所述待存儲(chǔ)數(shù)據(jù)的鍵值;發(fā)送模塊,用于將所述生成模塊生成的鍵值與所述待存儲(chǔ)數(shù)據(jù)發(fā)送并存儲(chǔ)到緩存系統(tǒng)。
[0013]在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述生成模塊包括版本號(hào)設(shè)置單元和生成單元,其中,所述版本號(hào)設(shè)置單元,用于為所述項(xiàng)目標(biāo)識(shí)設(shè)置版本號(hào);所述生成單元,用于以所述版本號(hào)設(shè)置單元設(shè)置的版本號(hào)、所述數(shù)據(jù)標(biāo)識(shí)和所述項(xiàng)目標(biāo)識(shí)為參數(shù),按照預(yù)設(shè)算法生成所述待存儲(chǔ)數(shù)據(jù)的鍵值。
[0014]結(jié)合上述第二方面,在第二種可能的實(shí)現(xiàn)方式中,所述生成模塊還包括確定單元,其中,所述確定單元,用于將所述項(xiàng)目標(biāo)識(shí)確定為所述版本號(hào)的鍵值;所述發(fā)送模塊,還用于將所述版本號(hào)和所述確定單元確定的版本號(hào)的鍵值發(fā)送并存儲(chǔ)到所述緩存系統(tǒng)。
[0015]結(jié)合上述第二方面,在第三種可能的實(shí)現(xiàn)方式中,所述接收模塊,還用于接收所述項(xiàng)目服務(wù)器的數(shù)據(jù)讀取請(qǐng)求,所述數(shù)據(jù)讀取請(qǐng)求包括所述數(shù)據(jù)標(biāo)識(shí)和所述項(xiàng)目標(biāo)識(shí);所述發(fā)送模塊,還用于將所述項(xiàng)目標(biāo)識(shí)發(fā)送到所述緩存系統(tǒng),所述接收模塊接收所述緩存系統(tǒng)根據(jù)所述項(xiàng)目標(biāo)識(shí)讀取的所述版本號(hào);所述生成模塊,還用于以所述接收模塊接收的版本號(hào)、所述數(shù)據(jù)標(biāo)識(shí)和所述項(xiàng)目標(biāo)識(shí)為參數(shù),按照預(yù)設(shè)算法生成所述待存儲(chǔ)數(shù)據(jù)的鍵值;所述發(fā)送模塊,還用于將所述鍵值發(fā)送到所述緩存系統(tǒng),所述接收模塊接收所述緩存系統(tǒng)根據(jù)所述鍵值讀取的所述數(shù)據(jù);所述發(fā)送模塊,還用于將所述數(shù)據(jù)發(fā)送到所述項(xiàng)目服務(wù)器。
[0016]結(jié)合上述第二方面,在第四種可能的實(shí)現(xiàn)方式中,所述接收模塊,還用于接收所述項(xiàng)目服務(wù)器發(fā)送的數(shù)據(jù)清空請(qǐng)求,所述數(shù)據(jù)清空請(qǐng)求中包括所述項(xiàng)目標(biāo)識(shí);所述生成模塊,還用于生成所述項(xiàng)目標(biāo)識(shí)的新版本號(hào);所述發(fā)送模塊,還用于將所述新版本號(hào)發(fā)送到所述緩存系統(tǒng),以使用所述新版本號(hào)替換已存儲(chǔ)的原版本號(hào)。
[0017]結(jié)合上述第二方面,在第五種可能的實(shí)現(xiàn)方式中,所述接收模塊,還用于接收所述項(xiàng)目服務(wù)器發(fā)送的項(xiàng)目名稱;所述生成模塊,還用于根據(jù)所述接收模塊所接收的項(xiàng)目名稱生成所述項(xiàng)目標(biāo)識(shí);所述發(fā)送模塊,還用于將所述生成模塊生成的項(xiàng)目標(biāo)識(shí)發(fā)送到所述項(xiàng)目服務(wù)器。
[0018]第三方面,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)存儲(chǔ)系統(tǒng),包括:中間服務(wù)器、項(xiàng)目服務(wù)器和緩存系統(tǒng),其中,所述中間服務(wù)器如第二方面所述;所述項(xiàng)目服務(wù)器,用于向所述中間服務(wù)器發(fā)送數(shù)據(jù)存儲(chǔ)請(qǐng)求;還用于向所述中間服務(wù)器發(fā)送數(shù)據(jù)讀取請(qǐng)求,并接收所述中間服務(wù)器響應(yīng)所述數(shù)據(jù)讀取請(qǐng)求所發(fā)送的數(shù)據(jù);還用于向所述中間服務(wù)器發(fā)送數(shù)據(jù)清空請(qǐng)求;所述緩存系統(tǒng),用于存儲(chǔ)所述中間服務(wù)器發(fā)送的鍵值和數(shù)據(jù);還用于根據(jù)所述數(shù)據(jù)讀取請(qǐng)求讀取相應(yīng)數(shù)據(jù),以及將所讀取的數(shù)據(jù)發(fā)送到所述中間服務(wù)器。
[0019]由以上技術(shù)方案可知,為了解決現(xiàn)有存儲(chǔ)方法對(duì)數(shù)據(jù)產(chǎn)生誤操作的技術(shù)問題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)存儲(chǔ)方法、裝置及系統(tǒng),本方案設(shè)置一個(gè)中間服務(wù)器,該中間服務(wù)器接收項(xiàng)目服務(wù)器發(fā)送的數(shù)據(jù)存儲(chǔ)請(qǐng)求,其中,數(shù)據(jù)存儲(chǔ)請(qǐng)求包括待存儲(chǔ)數(shù)據(jù)、數(shù)據(jù)標(biāo)識(shí)和預(yù)設(shè)的項(xiàng)目標(biāo)識(shí),所述數(shù)據(jù)標(biāo)識(shí)為待存儲(chǔ)數(shù)據(jù)的標(biāo)識(shí)信息,項(xiàng)目標(biāo)識(shí)為待存儲(chǔ)數(shù)據(jù)所屬項(xiàng)目的標(biāo)識(shí)信息。中間服務(wù)器根據(jù)數(shù)據(jù)標(biāo)識(shí)和項(xiàng)目標(biāo)識(shí)生成待存儲(chǔ)數(shù)據(jù)的鍵值,然后,將鍵值和待存儲(chǔ)數(shù)據(jù)發(fā)送并保存到緩存系統(tǒng)。與現(xiàn)有技術(shù)相比,不同的項(xiàng)目服務(wù)器對(duì)應(yīng)不同的項(xiàng)目標(biāo)識(shí),從而能夠?qū)⒉煌?xiàng)目的數(shù)據(jù)進(jìn)行區(qū)分,而同一個(gè)項(xiàng)目中的數(shù)據(jù)由項(xiàng)目服務(wù)器設(shè)置不同的數(shù)據(jù)標(biāo)識(shí),因此,根據(jù)項(xiàng)目標(biāo)識(shí)和數(shù)據(jù)