一種緩存更新方法及設(shè)備的制作方法
【專利摘要】本發(fā)明提供一種緩存更新方法及設(shè)備,涉及計算機(jī)【技術(shù)領(lǐng)域】,能夠?qū)崟r地更新緩存存儲的數(shù)據(jù),從而提升Web系統(tǒng)的性能。該方法包括:獲取用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息,并根據(jù)第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取第一數(shù)據(jù),以及將緩存中存儲的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為第一數(shù)據(jù)。
【專利說明】一種緩存更新方法及設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種緩存更新方法及設(shè)備。
【背景技術(shù)】
[0002]隨著Web技術(shù)的發(fā)展,Web系統(tǒng)中用戶的訪問量逐漸增加,為了提高用戶訪問Web系統(tǒng)的效率,緩存技術(shù)應(yīng)運(yùn)而生。
[0003]現(xiàn)有的Web系統(tǒng)是通過在服務(wù)器中安裝Hibernate來連接數(shù)據(jù)庫的。Hibernate采用兩級緩存架構(gòu),其中,一級緩存為Hibernate框架本身的Session (會話)緩存,二級緩存為與服務(wù)器中運(yùn)行的進(jìn)程相關(guān)的緩存。為了滿足用戶的訪問需求,軟件開發(fā)人員在Web系統(tǒng)的應(yīng)用程序中對一級緩存存儲的數(shù)據(jù)設(shè)置了有效時間,即數(shù)據(jù)在一級緩存中的存放時間,當(dāng)用戶訪問Web系統(tǒng)時,服務(wù)器可以以該有效時間為周期,不斷地更新一級緩存存儲的數(shù)據(jù),進(jìn)而滿足用戶的訪問需求。
[0004]然而,由于上述有效時間為軟件開發(fā)人員提前在Web系統(tǒng)的應(yīng)用程序中設(shè)置好的,因此,服務(wù)器只能在該有效時間結(jié)束后更新一級緩存存儲的數(shù)據(jù),從而導(dǎo)致一級緩存存儲的數(shù)據(jù)無法實(shí)時更新,進(jìn)而影響了 Web系統(tǒng)的性能。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的實(shí)施例提供一種緩存更新方法及設(shè)備,能夠?qū)崟r地更新緩存存儲的數(shù)據(jù),從而提升Web系統(tǒng)的性能。
[0006]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0007]第一方面,本發(fā)明實(shí)施例提供一種緩存更新方法,包括:
[0008]獲取用戶端發(fā)送的所述用戶端請求的第一數(shù)據(jù)的信息;
[0009]根據(jù)所述第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取所述第一數(shù)據(jù);
[0010]將緩存中存儲的與所述第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為所述第一數(shù)據(jù)。
[0011]在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述將緩存中存儲的與所述第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為所述第一數(shù)據(jù)具體包括:
[0012]根據(jù)所述第一數(shù)據(jù)的信息,生成過期消息,所述過期消息用于指示所述緩存中存儲的所述第二數(shù)據(jù)過期;
[0013]根據(jù)所述過期消息,刪除所述緩存中存儲的所述第二數(shù)據(jù);
[0014]將所述第一數(shù)據(jù)存儲在所述緩存中。
[0015]結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,
[0016]所述第一數(shù)據(jù)的信息包括所述第一數(shù)據(jù)的類型和所述第一數(shù)據(jù)的標(biāo)識。
[0017]結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第二種可能的實(shí)現(xiàn)方式中的任一種實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,
[0018]所述緩存包括二級緩存和三級緩存,所述二級緩存包括RediS,所述三級緩存包括第二數(shù)據(jù)庫。
[0019]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述將緩存中存儲的與所述第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為所述第一數(shù)據(jù)具體包括:
[0020]根據(jù)所述第一數(shù)據(jù)的類型和所述第一數(shù)據(jù)的標(biāo)識,將所述二級緩存或所述三級緩存中存儲的所述第二數(shù)據(jù)更新為所述第一數(shù)據(jù)。
[0021]第二方面,本發(fā)明實(shí)施例提供一種服務(wù)器,包括:
[0022]獲取單元,用于獲取用戶端發(fā)送的所述用戶端請求的第一數(shù)據(jù)的信息,并根據(jù)所述第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取所述第一數(shù)據(jù);
[0023]更新單元,用于將緩存中存儲的與所述第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為所述第一數(shù)據(jù)。
[0024]在第二方面的第一種可能的實(shí)現(xiàn)方式中,
[0025]所述更新單元,具體用于根據(jù)所述第一數(shù)據(jù)的信息,生成過期消息,并根據(jù)所述過期消息,刪除所述緩存中存儲的所述第二數(shù)據(jù),以及將所述第一數(shù)據(jù)存儲在所述緩存中,所述過期消息用于指示所述緩存中存儲的所述第二數(shù)據(jù)過期。
[0026]結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,
[0027]所述第一數(shù)據(jù)的信息包括所述第一數(shù)據(jù)的類型和所述第一數(shù)據(jù)的標(biāo)識。
[0028]結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第二種可能的實(shí)現(xiàn)方式中的任一種實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,
[0029]所述緩存包括二級緩存和三級緩存,所述二級緩存包括Redis,所述三級緩存包括
第二數(shù)據(jù)庫。
[0030]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,
[0031]所述更新單元,具體用于根據(jù)所述第一數(shù)據(jù)的類型和所述第一數(shù)據(jù)的標(biāo)識,將所述二級緩存或所述三級緩存中存儲的所述第二數(shù)據(jù)更新為所述第一數(shù)據(jù)。
[0032]本發(fā)明實(shí)施例提供一種緩存更新方法及設(shè)備,通過獲取用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息,并根據(jù)第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取第一數(shù)據(jù),以及將緩存中存儲的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為第一數(shù)據(jù)。通過該方案,一旦獲取到用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息,就可根據(jù)該數(shù)據(jù)的信息,更新緩存中存儲的與該數(shù)據(jù)的信息對應(yīng)的數(shù)據(jù),從而能夠?qū)崟r地更新緩存存儲的數(shù)據(jù),進(jìn)而提升Web系統(tǒng)的性能。
【專利附圖】
【附圖說明】
[0033]圖1為本發(fā)明實(shí)施例提供的一種緩存更新方法的流程圖一;
[0034]圖2為本發(fā)明實(shí)施例提供的Web系統(tǒng)的結(jié)構(gòu)示意圖;
[0035]圖3為本發(fā)明實(shí)施例提供的一種緩存更新方法的流程圖二 ;
[0036]圖4為本發(fā)明實(shí)施例提供的用戶端訪問Web系統(tǒng)的流程圖;
[0037]圖5為本發(fā)明實(shí)施例提供的服務(wù)器的結(jié)構(gòu)示意圖一;
[0038]圖6為本發(fā)明實(shí)施例提供的服務(wù)器的結(jié)構(gòu)示意圖二。
【具體實(shí)施方式】[0039]下面結(jié)合附圖對本發(fā)明實(shí)施例提供的一種緩存更新方法及設(shè)備進(jìn)行詳細(xì)地描述。
[0040]實(shí)施例一
[0041]本發(fā)明的實(shí)施例提供一種緩存更新方法,如圖1所示,該方法可以包括:
[0042]S101、服務(wù)器獲取用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息。
[0043]本發(fā)明實(shí)施例中,如圖2所示,用戶端(可以為瀏覽器),服務(wù)器(可以為Web服務(wù)器)、中間接口和第一數(shù)據(jù)庫組成一個Web系統(tǒng),其中,中間接口可以將服務(wù)器和第一數(shù)據(jù)庫直接關(guān)聯(lián),中間接口能夠直接調(diào)用外部程序或腳本代碼來訪問第一數(shù)據(jù)庫,因此,中間接口可以提供與第一數(shù)據(jù)庫相關(guān)的動態(tài)HTML (Hypertext Markup Language,超文本標(biāo)記語言)頁面,或查詢第一數(shù)據(jù)庫,并將查詢結(jié)果轉(zhuǎn)化成HTML頁面后,通過服務(wù)器返回給用戶端。
[0044]由于用戶端、服務(wù)器通過中間接口與第一數(shù)據(jù)庫直接關(guān)聯(lián),因此,當(dāng)用戶端發(fā)送用戶端請求的第一數(shù)據(jù)的信息時,用戶端和服務(wù)器之間建立連接,且用戶端通過HTTP(Hypertext transfer protocol,超文本傳輸協(xié)議)將用戶端請求的第一數(shù)據(jù)的信息發(fā)送至服務(wù)器,以使服務(wù)器可以根據(jù)用戶端請求的第一數(shù)據(jù)的信息,通過中間接口將用戶端請求的第一數(shù)據(jù)寫入第一數(shù)據(jù)庫中,或者服務(wù)器可將第一數(shù)據(jù)庫中保存的與用戶端發(fā)送的第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)進(jìn)行更新。同時,服務(wù)器也可以通過中間接口將用戶端請求的已經(jīng)保存在第一數(shù)據(jù)庫中的第一數(shù)據(jù)從第一數(shù)據(jù)庫中讀取出來,并將該第一數(shù)據(jù)保存至服務(wù)器的緩存中,以方便用戶端后續(xù)進(jìn)行訪問。
[0045]S102、服務(wù)器根據(jù)第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取第一數(shù)據(jù)。
[0046]服務(wù)器通過中間接口將用戶端請求的第一數(shù)據(jù)寫入第一數(shù)據(jù)庫中,或?qū)⒌谝粩?shù)據(jù)庫中與用戶端請求的第一數(shù)據(jù)對應(yīng)的數(shù)據(jù)進(jìn)行更新后,服務(wù)器可根據(jù)獲取到的第一數(shù)據(jù)的信息,通過中間接口從第一數(shù)據(jù)庫中獲取該第一數(shù)據(jù),從而服務(wù)器可將緩存中保存的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為第一數(shù)據(jù)。
[0047]緩存是指服務(wù)器中可以臨時進(jìn)行高速數(shù)據(jù)交換的數(shù)據(jù)存儲區(qū)。服務(wù)器通過將最常用的數(shù)據(jù)從數(shù)據(jù)庫中讀取出來并臨時保存在緩存中,這樣不但可比服務(wù)器從數(shù)據(jù)庫中讀取數(shù)據(jù)方便,而且還可以提高服務(wù)器的工作效率。
[0048]S103、服務(wù)器將緩存中存儲的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為第一數(shù)據(jù)。
[0049]由于服務(wù)器通過中間接口與第一數(shù)據(jù)庫直接關(guān)聯(lián),因此,服務(wù)器可實(shí)時地通過中間接口將用戶端請求的第一數(shù)據(jù)保存至第一數(shù)據(jù)庫中,或?qū)Φ谝粩?shù)據(jù)庫中與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)進(jìn)行更新;當(dāng)服務(wù)器通過中間接口對第一數(shù)據(jù)庫進(jìn)行更新后,服務(wù)器才能通過中間接口,根據(jù)更新后的第一數(shù)據(jù)庫更新服務(wù)器的緩存,以便于用戶下次訪問Web系統(tǒng)時,服務(wù)器可以直接從緩存中讀取用戶請求的第一數(shù)據(jù),從而避免了現(xiàn)有技術(shù)當(dāng)用戶端請求數(shù)據(jù)時,服務(wù)器每次均需從第一數(shù)據(jù)庫中讀取數(shù)據(jù)的問題,進(jìn)而提高了服務(wù)器的工作效率。
[0050]需要說明的是,當(dāng)服務(wù)器通過中間接口對第一數(shù)據(jù)庫進(jìn)行更新后,服務(wù)器的緩存中存儲的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)已經(jīng)過期,即第二數(shù)據(jù)已經(jīng)無法再繼續(xù)使用了,此時,服務(wù)器需對緩存中保存的第二數(shù)據(jù)進(jìn)行更新,以保證用戶端后續(xù)的正常訪問。具體的,服務(wù)器從第一數(shù)據(jù)庫獲取第一數(shù)據(jù)之后,服務(wù)器可將緩存中存儲的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為第一數(shù)據(jù),以使得第一數(shù)據(jù)庫和緩存中都保存有第一數(shù)據(jù)。從而使得當(dāng)用戶端后續(xù)訪問Web系統(tǒng)時,服務(wù)器可以方便地從緩存中讀取出第一數(shù)據(jù),并向用戶端提供服務(wù)。
[0051]進(jìn)一步地,由于第一數(shù)據(jù)庫中存儲的數(shù)據(jù)量比較大,當(dāng)服務(wù)器通過中間接口從第一數(shù)據(jù)庫中讀取對應(yīng)的數(shù)據(jù)時,服務(wù)器需在第一數(shù)據(jù)庫中的所有數(shù)據(jù)中查找該對應(yīng)的數(shù)據(jù),因此,服務(wù)器讀取數(shù)據(jù)的速度較慢。由于緩存中存儲的數(shù)據(jù)為第一數(shù)據(jù)庫中的部分常用的數(shù)據(jù),即緩存中存儲的數(shù)據(jù)量較小,因此,服務(wù)器讀取數(shù)據(jù)的速度較快,從而使得服務(wù)器從緩存中讀取數(shù)據(jù)更方便,效率更高。
[0052]可以理解的是,上述過程是針對服務(wù)器的緩存中存儲的數(shù)據(jù)更新的方法。而當(dāng)用戶端后續(xù)訪問Web系統(tǒng)時,服務(wù)器需向用戶端返回用戶端請求的數(shù)據(jù)。具體的,用戶端發(fā)送請求第一數(shù)據(jù)的請求消息至服務(wù)器,即服務(wù)器獲取用戶端發(fā)送的請求第一數(shù)據(jù)的請求消息之后,服務(wù)器可根據(jù)用戶端發(fā)送的請求第一數(shù)據(jù)的請求消息直接從緩存中獲取該第一數(shù)據(jù),并將該第一數(shù)據(jù)提供給用戶端。
[0053]本發(fā)明實(shí)施例提供一種緩存更新方法,通過服務(wù)器獲取用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息,并根據(jù)第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取第一數(shù)據(jù),以及將緩存中存儲的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為第一數(shù)據(jù)。通過該方案,服務(wù)器一旦獲取到用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息,就可根據(jù)該數(shù)據(jù)的信息,更新緩存中存儲的與該數(shù)據(jù)的信息對應(yīng)的數(shù)據(jù),從而能夠?qū)崟r地更新緩存存儲的數(shù)據(jù),進(jìn)而提升Web系統(tǒng)的性能。
[0054]實(shí)施例二
[0055]本發(fā)明的實(shí)施例提供一種緩存更新方法,如圖3所示,該方法可以包括:
[0056]S201、服務(wù)器獲取用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息。
[0057]本發(fā)明實(shí)施例中,如圖2所示,用戶端(可以為瀏覽器)、服務(wù)器(可以為Web服務(wù)器)、中間接口和第一數(shù)據(jù)庫組成一個Web系統(tǒng)。其中,中間接口可以將服務(wù)器和第一數(shù)據(jù)庫直接關(guān)聯(lián),中間接口能夠直接調(diào)用外部程序或腳本代碼來訪問第一數(shù)據(jù)庫,因此,中間接口可以提供與第一數(shù)據(jù)庫相關(guān)的動態(tài)HTML頁面,或查詢第一數(shù)據(jù)庫,并將查詢結(jié)果轉(zhuǎn)化為HTML頁面后,通過服務(wù)器返回給用戶端。
[0058]由于用戶端、服務(wù)器通過中間接口與第一數(shù)據(jù)庫直接關(guān)聯(lián),因此,當(dāng)用戶端發(fā)送用戶端請求的第一數(shù)據(jù)的信息時,用戶端和服務(wù)器之間建立連接,且用戶端通過HTTP將用戶端請求的第一數(shù)據(jù)的信息發(fā)送至服務(wù)器,以使服務(wù)器可以根據(jù)用戶端請求的第一數(shù)據(jù)的信息,通過中間接口將用戶端請求的第一數(shù)據(jù)寫入第一數(shù)據(jù)庫中,或者服務(wù)器可將第一數(shù)據(jù)庫中保存的與用戶端發(fā)送的第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)進(jìn)行更新。同時,服務(wù)器也可以通過中間接口將用戶端請求的已經(jīng)保存在第一數(shù)據(jù)庫中的第一數(shù)據(jù)從第一數(shù)據(jù)庫中讀取出來,并將該第一數(shù)據(jù)保存至服務(wù)器的緩存中,以方便用戶端后續(xù)進(jìn)行訪問。
[0059]可選的,第一數(shù)據(jù)的信息包括第一數(shù)據(jù)的類型和第一數(shù)據(jù)的標(biāo)識。
[0060]S202、服務(wù)器根據(jù)第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取第一數(shù)據(jù)。
[0061]服務(wù)器通過中間接口將用戶端請求的第一數(shù)據(jù)寫入第一數(shù)據(jù)庫中,或?qū)⒌谝粩?shù)據(jù)庫中與用戶端請求的第一數(shù)據(jù)對應(yīng)的數(shù)據(jù)進(jìn)行更新后,服務(wù)器可根據(jù)獲取到的第一數(shù)據(jù)的信息,通過中間接口從第一數(shù)據(jù)庫中獲取對應(yīng)的第一數(shù)據(jù),從而服務(wù)器可將緩存中保存的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為第一數(shù)據(jù)。[0062]緩存是指服務(wù)器中可以臨時進(jìn)行高速數(shù)據(jù)交換的數(shù)據(jù)存儲區(qū)。服務(wù)器通過將最常用的數(shù)據(jù)從數(shù)據(jù)庫中讀取出來并臨時保存在緩存中,這樣不但可比服務(wù)器從數(shù)據(jù)庫中讀取數(shù)據(jù)方便,而且還可以提高Web服務(wù)器的工作效率。
[0063]S203、服務(wù)器根據(jù)第一數(shù)據(jù)的信息,生成過期消息,其中,過期消息用于指示緩存中存儲的第二數(shù)據(jù)過期。
[0064]由于服務(wù)器通過中間接口與第一數(shù)據(jù)庫直接關(guān)聯(lián),因此,服務(wù)器可實(shí)時地通過中間接口將用戶端請求的第一數(shù)據(jù)保存至第一數(shù)據(jù)庫中,或?qū)Φ谝粩?shù)據(jù)庫中與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)進(jìn)行更新;當(dāng)服務(wù)器通過中間接口對第一數(shù)據(jù)庫進(jìn)行更新后,服務(wù)器才能通過中間接口,根據(jù)更新后的第一數(shù)據(jù)庫更新服務(wù)器的緩存,以便于用戶下次訪問Web系統(tǒng)時,服務(wù)器可以直接從緩存中讀取用戶請求的第一數(shù)據(jù),從而避免了現(xiàn)有技術(shù)當(dāng)用戶端請求數(shù)據(jù)時,服務(wù)器每次均需從第一數(shù)據(jù)庫中讀取數(shù)據(jù)的問題,進(jìn)而提高了服務(wù)器的工作效率。
[0065]需要說明的是,當(dāng)服務(wù)器通過中間接口對第一數(shù)據(jù)庫進(jìn)行更新后,服務(wù)器的緩存中存儲的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)已經(jīng)過期,即第二數(shù)據(jù)已經(jīng)無法再繼續(xù)使用了,此時,服務(wù)器需對緩存中保存的第二數(shù)據(jù)進(jìn)行更新,以保證用戶端后續(xù)的正常訪問。具體的,服務(wù)器根據(jù)從用戶端接收到的第一數(shù)據(jù)的信息,生成過期消息,其中,過期消息用于指示緩存中存儲的第二數(shù)據(jù)過期
[0066]S204、服務(wù)器根據(jù)過期消息,刪除緩存中存儲的第二數(shù)據(jù),并將第一數(shù)據(jù)存儲在緩存中。
[0067]服務(wù)器生成過期消息后,服務(wù)器可根據(jù)過期消息,刪除緩存中存儲的第二數(shù)據(jù),以及將從第一數(shù)據(jù)庫中獲取的第一數(shù)據(jù)存儲在服務(wù)器的緩存中,以使得第一數(shù)據(jù)庫和服務(wù)器的緩存中都保存有第一數(shù)據(jù)。從而使得服務(wù)器后續(xù)可以直接從緩存中讀取第一數(shù)據(jù),更方便地為用戶提供服務(wù)。
[0068]進(jìn)一步地,由于第一數(shù)據(jù)庫中存儲的數(shù)據(jù)量比較大,當(dāng)服務(wù)器通過中間接口從第一數(shù)據(jù)庫中讀取對應(yīng)的數(shù)據(jù)時,服務(wù)器需在第一數(shù)據(jù)庫中的所有數(shù)據(jù)中查找該對應(yīng)的數(shù)據(jù),因此,服務(wù)器讀取數(shù)據(jù)的速度較慢。由于緩存中存儲的數(shù)據(jù)為第一數(shù)據(jù)庫中的部分常用的數(shù)據(jù),即緩存中存儲的數(shù)據(jù)量較小,因此,服務(wù)器讀取數(shù)據(jù)的速度較快,從而使得服務(wù)器從緩存中讀取數(shù)據(jù)更方便,效率更高。
[0069]可選的,緩存可以包括二級緩存和三級緩存,其中,二級緩存包括Redis,三級緩存包括第二數(shù)據(jù)庫。
[0070]需要說明的是,一級緩存為與服務(wù)器中運(yùn)行的進(jìn)程相關(guān)的緩存,一級緩存中存儲的數(shù)據(jù)使用頻率很高,但是數(shù)據(jù)本身并不是很大,通過將這種數(shù)據(jù)存儲在與服務(wù)器中運(yùn)行的進(jìn)程相關(guān)的緩存中,能夠快速的完成數(shù)據(jù)的存取。
[0071]二級緩存是為了協(xié)調(diào)一級緩存與內(nèi)存之間的速度而設(shè)立的,二級緩存比一級緩存的速度慢,但是相比一級緩存的容量,二級緩存的容量提供了數(shù)量級上的優(yōu)勢,二級緩存主要是一級緩存和內(nèi)存之間數(shù)據(jù)臨時交換的地方。二級緩存一般為高效的緩存,如Redis,二級緩存中一般存儲數(shù)據(jù)量很大的數(shù)據(jù),由于這些數(shù)據(jù)無法全部放在與Web服務(wù)器中運(yùn)行的進(jìn)程相關(guān)的緩存中,因此,需要將該中等級別的數(shù)據(jù)放在一個支持大數(shù)據(jù)容量的高效的緩存之中,如二級緩存。[0072]需要說明的是,Redis是一個開發(fā)源代碼的高效的K_V數(shù)據(jù)庫,Redis可用作二級緩存。
[0073]三級緩存是為讀取二級緩存后未命中的數(shù)據(jù)設(shè)計的一種緩存,三級緩存為第二數(shù)據(jù)庫,三級緩存中一般存儲著用戶端訪問第三方的Web服務(wù)數(shù)據(jù)或者其他RPC (RemoteProcedure Call,遠(yuǎn)程過程調(diào)用)數(shù)據(jù)。由于Web系統(tǒng)中第三方的Web服務(wù)數(shù)據(jù)被用戶端訪問的頻率較低,因此可以選用相對于一級緩存和二級緩存的讀取速度較慢的三級緩存來存儲第三方服務(wù)數(shù)據(jù)。本發(fā)明實(shí)施例中,可以將第三方的Web服務(wù)數(shù)據(jù)或者其他RPC數(shù)據(jù)存儲在作為三級緩存的第二數(shù)據(jù)庫中。
[0074]特別的,一級緩存,即與服務(wù)器中運(yùn)行的進(jìn)程相關(guān)的緩存中存儲的數(shù)據(jù),是隨著進(jìn)程的開始而創(chuàng)建,隨著進(jìn)程的結(jié)束而清除的,因此與服務(wù)器中運(yùn)行的進(jìn)程相關(guān)的緩存中存儲的數(shù)據(jù)是隨著進(jìn)程的開始而更新的,即一級緩存不需要通過上述的過期消息來控制其更新。而二級緩存和三級緩存中存儲的數(shù)據(jù)則需通過上述的過期消息來控制服務(wù)器更新。
[0075]可以理解的是,上述過程是針對服務(wù)器的緩存中存儲的數(shù)據(jù)更新的方法。而當(dāng)用戶端對Web系統(tǒng)的數(shù)據(jù)進(jìn)行修改后,服務(wù)器除了需更新第一數(shù)據(jù)庫及服務(wù)器的緩存中存儲的數(shù)據(jù)外,服務(wù)器還需向用戶端返回用戶端請求的數(shù)據(jù)。具體的,用戶端發(fā)送用戶端請求的第一數(shù)據(jù)的信息至服務(wù)器,即服務(wù)器獲取用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息之后,服務(wù)器可根據(jù)用戶端發(fā)送的第一數(shù)據(jù)的信息更新第一數(shù)據(jù)庫和服務(wù)器的緩存中存儲的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù),并將該第一數(shù)據(jù)提供給用戶端。
[0076]具體的,當(dāng)用戶端后續(xù)訪問Web系統(tǒng)時,如圖4所示,用戶端可發(fā)送請求第一數(shù)據(jù)的請求消息至服務(wù)器,即服務(wù)器獲取到用戶端發(fā)送的請求第一數(shù)據(jù)的請求消息之后,服務(wù)器可根據(jù)用戶端發(fā)送的請求第一數(shù)據(jù)的請求消息,首先在一級緩存中查找該第一數(shù)據(jù),若服務(wù)器在一級緩存中查找到該第一數(shù)據(jù),則返回該第一數(shù)據(jù)至用戶端,若服務(wù)器在一級緩存中未查找到該第一數(shù)據(jù),服務(wù)器則再在二級緩存中查找該第一數(shù)據(jù),若服務(wù)器在二級緩存中查找到該第一數(shù)據(jù),則返回該第一數(shù)據(jù)至用戶端,若服務(wù)器在二級緩存中未查找到該第一數(shù)據(jù),服務(wù)器則再從第一數(shù)據(jù)庫中讀取該第一數(shù)據(jù)。
[0077]可選的,服務(wù)器可根據(jù)第一數(shù)據(jù)的信息中攜帶的第一數(shù)據(jù)的類型和第一數(shù)據(jù)的標(biāo)識,將二級緩存或三級緩存中存儲的第二數(shù)據(jù)更新為第一數(shù)據(jù)。其中,第一數(shù)據(jù)的類型可以包括第一數(shù)據(jù)的文件類型,如:HTML、CSS (Cascading Style Sheet,級聯(lián)樣式表)及GIF(Graphicslnterchange Format,圖像互換格式)等;第一數(shù)據(jù)的標(biāo)識可以包括第一數(shù)據(jù)的文件名,如1.html, 2.gif等。
[0078]特別的,本發(fā)明實(shí)施例中,服務(wù)器更新緩存中的第二數(shù)據(jù)時,服務(wù)器可根據(jù)用戶端請求的第一數(shù)據(jù)的信息中攜帶的第一數(shù)據(jù)的類型和第一數(shù)據(jù)的標(biāo)識,對用戶端請求的第一數(shù)據(jù)的信息進(jìn)行識別,若第一數(shù)據(jù)的信息為訪問第三方的Web服務(wù)數(shù)據(jù)或其他RPC數(shù)據(jù)的信息,服務(wù)器則將三級緩存中存儲的第二數(shù)據(jù)更新為第一數(shù)據(jù),否則,服務(wù)器將二級緩存中存儲的第二數(shù)據(jù)更新為第一數(shù)據(jù)。
[0079]本發(fā)明實(shí)施例提供一種緩存更新方法,通過Web服務(wù)器獲取用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息,并根據(jù)第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取第一數(shù)據(jù),以及將緩存中存儲的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為第一數(shù)據(jù)。通過該方案,Web服務(wù)器一旦獲取到用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息,就可根據(jù)用該數(shù)據(jù)的信息更新緩存中存儲的與該數(shù)據(jù)的信息對應(yīng)的數(shù)據(jù),從而能夠?qū)崟r地更新緩存存儲的數(shù)據(jù),進(jìn)而提升Web系統(tǒng)的性能。
[0080]實(shí)施例三
[0081]如圖5所示,本發(fā)明的實(shí)施例提供一種服務(wù)器1,該服務(wù)器I可以包括:
[0082]獲取單元10,用于獲取用戶端發(fā)送的所述用戶端請求的第一數(shù)據(jù)的信息,并根據(jù)所述第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取所述第一數(shù)據(jù)。
[0083]更新單元11,用于將緩存中存儲的與所述第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為所述第一數(shù)據(jù)。
[0084]可選的,所述更新單元11,具體用于根據(jù)所述獲取單元10獲取的所述第一數(shù)據(jù)的信息,生成過期消息,并根據(jù)所述過期消息,刪除所述緩存中存儲的所述第二數(shù)據(jù),以及將所述第一數(shù)據(jù)存儲在所述緩存中,所述過期消息用于指示所述緩存中存儲的所述第二數(shù)據(jù)過期。
[0085]可選的,所述獲取單元10獲取的所述第一數(shù)據(jù)的信息包括所述第一數(shù)據(jù)的類型和所述第一數(shù)據(jù)的標(biāo)識。
[0086]可選的,所述緩存包括二級緩存和三級緩存,所述二級緩存包括Redis,所述三級緩存包括第二數(shù)據(jù)庫。
[0087]可選的,所述更新單元11,具體用于根據(jù)所述第一數(shù)據(jù)的類型和所述第一數(shù)據(jù)的標(biāo)識,將所述二級緩存或所述三級緩存中存儲的所述第二數(shù)據(jù)更新為所述第一數(shù)據(jù)。
[0088]本發(fā)明實(shí)施例提供一種服務(wù)器,該服務(wù)器通過獲取用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息,并根據(jù)第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取第一數(shù)據(jù),以及將緩存中存儲的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為第一數(shù)據(jù)。通過該方案,該服務(wù)器一旦獲取到用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息,就可根據(jù)該數(shù)據(jù)的信息,更新緩存中存儲的與該數(shù)據(jù)的信息對應(yīng)的數(shù)據(jù),從而能夠?qū)崟r地更新緩存存儲的數(shù)據(jù),進(jìn)而提升Web系統(tǒng)的性能。
[0089]實(shí)施例四
[0090]如圖6所示,為本發(fā)明實(shí)施例提供的服務(wù)器的結(jié)構(gòu)示意圖,本發(fā)明的實(shí)施例提供的服務(wù)器可以包括:處理器20、存儲器21、系統(tǒng)總線22和通信接口 23。處理器20、存儲器21和通信接口 23之間通過系統(tǒng)總線22連接并完成相互間的通信。
[0091]處理器20可能為單核或多核中央處理單元,或者為特定集成電路或者為被配置為實(shí)施本發(fā)明實(shí)施例的一個或多個集成電路。
[0092]存儲器21可以為高速RAM (Random Access Memory,隨機(jī)存取存儲器),也可以為非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。
[0093]存儲器21用于存儲服務(wù)器指令。具體的,服務(wù)器指令可以包括軟件程序和軟件代碼。
[0094]具體的,處理器20可用于通過系統(tǒng)總線22從通信接口 23獲取用戶端發(fā)送的所述用戶端請求的第一數(shù)據(jù)的信息,并根據(jù)所述第一數(shù)據(jù)的信息,通過系統(tǒng)總線22和通信接口23從第一數(shù)據(jù)庫中獲取所述第一數(shù)據(jù),以及通過系統(tǒng)總線22將緩存中存儲的與所述第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為所述第一數(shù)據(jù);所述存儲器21用于存儲所述第一數(shù)據(jù)的信息的軟件代碼、所述第一數(shù)據(jù)的軟件代碼、所述第二數(shù)據(jù)的軟件代碼及控制所述處理器20完成上述步驟的軟件程序,從而使得所述處理器20通過執(zhí)行所述軟件程序并調(diào)用所述軟件代碼完成上述步驟。
[0095]可選的,所述處理器20,具體用于根據(jù)所述第一數(shù)據(jù)的信息,生成過期消息,并根據(jù)所述過期消息,刪除所述緩存中存儲的所述第二數(shù)據(jù),以及將所述第一數(shù)據(jù)存儲在所述緩存中,所述過期消息用于指示所述緩存中存儲的所述第二數(shù)據(jù)過期。
[0096]可選的,所述處理器20獲取的所述第一數(shù)據(jù)的信息包括所述第一數(shù)據(jù)的類型和所述第一數(shù)據(jù)的標(biāo)識。
[0097]可選的,所述緩存包括二級緩存和三級緩存,所述二級緩存包括Redis,所述三級緩存包括第二數(shù)據(jù)庫。
[0098]可選的,所述處理器20,具體用于根據(jù)所述第一數(shù)據(jù)的類型和所述第一數(shù)據(jù)的標(biāo)識,將所述二級緩存或所述三級緩存中存儲的所述第二數(shù)據(jù)更新為所述第一數(shù)據(jù)。
[0099]本發(fā)明實(shí)施例提供一種服務(wù)器,該服務(wù)器通過獲取用戶端發(fā)送的用戶端請求的第一數(shù)據(jù)的信息,并根據(jù)第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取第一數(shù)據(jù),以及將緩存中存儲的與第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為第一數(shù)據(jù)。通過該方案,該服務(wù)器一旦獲取到用戶端瀏覽器發(fā)送的用戶端請求的第一數(shù)據(jù)的信息,就可根據(jù)該數(shù)據(jù)的信息,更新緩存中存儲的與該數(shù)據(jù)的信息對應(yīng)的數(shù)據(jù),進(jìn)而能夠?qū)崟r地更新緩存存儲的數(shù)據(jù),從而提升Web系統(tǒng)的性能。
[0100]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。
[0101]在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合可以是通過一些接口,裝置的間接耦合,可以是電性,機(jī)械或其它的形式。
[0102]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是一個物理單元或多個物理單元,即可以位于一個地方,或者也可以分布到多個不同地方。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
[0103]另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
[0104]所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一個設(shè)備(可以是單片機(jī),芯片等)或處理器(processor)執(zhí)行本發(fā)明各個實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0105]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種緩存更新方法,其特征在于,包括: 獲取用戶端發(fā)送的所述用戶端請求的第一數(shù)據(jù)的信息; 根據(jù)所述第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取所述第一數(shù)據(jù); 將緩存中存儲的與所述第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為所述第一數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的緩存更新方法,其特征在于,所述將緩存中存儲的與所述第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為所述第一數(shù)據(jù)具體包括: 根據(jù)所述第一數(shù)據(jù)的信息,生成過期消息,所述過期消息用于指示所述緩存中存儲的所述第二數(shù)據(jù)過期; 根據(jù)所述過期消息,刪除所述緩存中存儲的所述第二數(shù)據(jù); 將所述第一數(shù)據(jù)存儲在所述緩存中。
3.根據(jù)權(quán)利要求1或2所述的緩存更新方法,其特征在于, 所述第一數(shù)據(jù)的信息包括所述第一數(shù)據(jù)的類型和所述第一數(shù)據(jù)的標(biāo)識。
4.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的緩存更新方法,其特征在于, 所述緩存包括二級緩存和三級緩存,所述二級緩存包括Redis,所述三級緩存包括第二數(shù)據(jù)庫。
5.根據(jù)權(quán)利要求4所述的緩存更新方法,其特征在于,所述將緩存中存儲的與所述第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為所述第一數(shù)據(jù)具體包括: 根據(jù)所述第一數(shù)據(jù)的類型和所述第一數(shù)據(jù)的標(biāo)識,將所述二級緩存或所述三級緩存中存儲的所述第二數(shù)據(jù)更新為所述第一數(shù)據(jù)。
6.一種服務(wù)器,其特征在于,包括: 獲取單元,用于獲取用戶端發(fā)送的所述用戶端請求的第一數(shù)據(jù)的信息,并根據(jù)所述第一數(shù)據(jù)的信息,從第一數(shù)據(jù)庫中獲取所述第一數(shù)據(jù); 更新單元,用于將緩存中存儲的與所述第一數(shù)據(jù)的信息對應(yīng)的第二數(shù)據(jù)更新為所述第一數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的服務(wù)器,其特征在于, 所述更新單元,具體用于根據(jù)所述第一數(shù)據(jù)的信息,生成過期消息,并根據(jù)所述過期消息,刪除所述緩存中存儲的所述第二數(shù)據(jù),以及將所述第一數(shù)據(jù)存儲在所述緩存中,所述過期消息用于指示所述緩存中存儲的所述第二數(shù)據(jù)過期。
8.根據(jù)權(quán)利要求6或7所述的服務(wù)器,其特征在于, 所述第一數(shù)據(jù)的信息包括所述第一數(shù)據(jù)的類型和所述第一數(shù)據(jù)的標(biāo)識。
9.根據(jù)權(quán)利要求6-8任一項(xiàng)所述的服務(wù)器,其特征在于, 所述緩存包括二級緩存和三級緩存,所述二級緩存包括Redis,所述三級緩存包括第二數(shù)據(jù)庫。
10.根據(jù)權(quán)利要求9所述的服務(wù)器,其特征在于, 所述更新單元,具體用于根據(jù)所述第一數(shù)據(jù)的類型和所述第一數(shù)據(jù)的標(biāo)識,將所述二級緩存或所述三級緩存中存儲的所述第二數(shù)據(jù)更新為所述第一數(shù)據(jù)。
【文檔編號】G06F17/30GK103530349SQ201310467506
【公開日】2014年1月22日 申請日期:2013年9月30日 優(yōu)先權(quán)日:2013年9月30日
【發(fā)明者】孟大巍, 姚曉鵬, 賴全輝 申請人:樂視致新電子科技(天津)有限公司