本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種緩存數(shù)據(jù)的更新方法,及一種緩存數(shù)據(jù)的更新裝置。
背景技術(shù):
隨著計算機技術(shù)的不斷發(fā)展,人們的生活越來越依賴于各種應(yīng)用程序,隨之也將產(chǎn)生越來越多的數(shù)據(jù)訪問操作,當(dāng)數(shù)據(jù)訪問量較大的時候,為了提高數(shù)據(jù)訪問的速度,一些大型的、需要頻繁訪問數(shù)據(jù)庫的網(wǎng)站通常采用分布式的高速緩存系統(tǒng)。
現(xiàn)有技術(shù)中,分布式的高速緩存系統(tǒng)的工作流程為:在接收到請求數(shù)據(jù)時,首先檢查請求數(shù)據(jù)是否在內(nèi)存緩存中,若是,直接把請求數(shù)據(jù)返回給相應(yīng)的請求方,不再對數(shù)據(jù)庫進行任何操作;如果請求的數(shù)據(jù)不在內(nèi)存緩存中,則到數(shù)據(jù)庫中查找請求的數(shù)據(jù),在數(shù)據(jù)庫中查找到請求的數(shù)據(jù)后,從數(shù)據(jù)庫中獲取該數(shù)據(jù),并將從數(shù)據(jù)庫中獲取的數(shù)據(jù)返回給相應(yīng)的請求方,同時將數(shù)據(jù)緩存一份到內(nèi)存中。然而,當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,若內(nèi)存中緩存有原數(shù)據(jù),則當(dāng)有對應(yīng)的請求時,獲取的仍然是內(nèi)存中緩存的原數(shù)據(jù)而非更新后的新數(shù)據(jù),從而無法保證數(shù)據(jù)的一致性。
技術(shù)實現(xiàn)要素:
為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,特提出以下技術(shù)方案:
本發(fā)明的實施例提出了一種緩存數(shù)據(jù)的更新方法,應(yīng)用于包括數(shù)據(jù)庫與緩存區(qū)域的數(shù)據(jù)庫系統(tǒng)中,該方法包括:
監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)更新操作,當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程;
通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù);
接收到針對第一數(shù)據(jù)的數(shù)據(jù)獲取請求時,從數(shù)據(jù)庫查找到相應(yīng)的更新后的第一數(shù)據(jù),并將更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中。
優(yōu)選地,當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程,包括:
當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,獲取針對第一數(shù)據(jù)的更新反饋信息;
根據(jù)更新反饋信息,判斷第一數(shù)據(jù)是否更新成功;
若是,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程。
優(yōu)選地,通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù),包括:
根據(jù)數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)的標(biāo)識信息,查找緩存區(qū)域中與第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù);
通過進程刪除緩存區(qū)域中與第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù)。
優(yōu)選地,通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù),包括:
接收到運行進程的命令后,暫停運行進程;
在預(yù)定暫停時長后,運行進程,并通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù)。
優(yōu)選地,接收到針對第一數(shù)據(jù)的數(shù)據(jù)獲取請求時,從數(shù)據(jù)庫查找到相應(yīng)的更新后的第一數(shù)據(jù),并將更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中,包括:
依據(jù)第一數(shù)據(jù)的標(biāo)識信息,判斷緩存區(qū)域中是否緩存有與第一數(shù)據(jù)對應(yīng)的緩存數(shù)據(jù);
若判斷得到緩存區(qū)域中未緩存與第一數(shù)據(jù)對應(yīng)的緩存數(shù)據(jù),則從數(shù)據(jù)庫查找相應(yīng)的更新后的第一數(shù)據(jù),并將查找到的更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中。
可選地,緩存區(qū)域中緩存數(shù)據(jù)具有預(yù)定的過期時間周期,該方法還包括:
根據(jù)預(yù)定的過期時間周期,判斷緩存區(qū)域中的緩存數(shù)據(jù)是否過期;
當(dāng)判斷緩存數(shù)據(jù)過期時,刪除已過期的緩存數(shù)據(jù)。
本發(fā)明的另一實施例提出了一種緩存數(shù)據(jù)的更新裝置,應(yīng)用于包括數(shù)據(jù)庫與緩存區(qū)域的數(shù)據(jù)庫系統(tǒng)中,該裝置包括:
監(jiān)測及創(chuàng)建模塊,用于監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)更新操作,當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程;
第一刪除模塊,用于通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù);
更新模塊,用于接收到針對第一數(shù)據(jù)的數(shù)據(jù)獲取請求時,從數(shù)據(jù)庫查找到相應(yīng)的更新后的第一數(shù)據(jù),并將更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中。
優(yōu)選地,監(jiān)測及創(chuàng)建模塊包括:
獲取單元,用于當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,獲取針對第一數(shù)據(jù)的更新反饋信息;
第一判斷單元,用于根據(jù)更新反饋信息,判斷第一數(shù)據(jù)是否更新成功;
創(chuàng)建單元,用于若判斷第一數(shù)據(jù)更新成功時,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程。
優(yōu)選地,第一刪除模塊包括:
查找單元,用于根據(jù)數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)的標(biāo)識信息,查找緩存區(qū)域中與第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù);
刪除單元,用于通過進程刪除緩存區(qū)域中與第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù)。
優(yōu)選地,第一刪除模塊包括:
暫停單元,用于接收到運行進程的命令后,暫停運行進程;
運行及刪除單元,用于在預(yù)定暫停時長后,運行進程,并通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù)。
優(yōu)選地,更新模塊包括:
第二判斷單元,用于依據(jù)第一數(shù)據(jù)的標(biāo)識信息,判斷緩存區(qū)域中是否緩存有與第一數(shù)據(jù)對應(yīng)的緩存數(shù)據(jù);
查找及更新單元,用于若判斷得到緩存區(qū)域中未緩存與第一數(shù)據(jù)對應(yīng)的緩存數(shù)據(jù),則從數(shù)據(jù)庫查找相應(yīng)的更新后的第一數(shù)據(jù),并將查找到的更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中。
可選地,緩存區(qū)域中緩存數(shù)據(jù)具有預(yù)定的過期時間周期,該裝置還包括:
判斷模塊,用于根據(jù)預(yù)定的過期時間周期,判斷緩存區(qū)域中的緩存數(shù)據(jù)是否過期;
第二刪除模塊,用于當(dāng)判斷緩存數(shù)據(jù)過期時,刪除已過期的緩存數(shù)據(jù)。
本發(fā)明的實施例中,提出了一種緩存數(shù)據(jù)的更新方案,監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)更新操作,當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程,通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù),避免了當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,緩存區(qū)域中緩存的對應(yīng)數(shù)據(jù)為未更新的舊數(shù)據(jù)的情況,從而避免了用戶獲取到錯誤的數(shù)據(jù);接收到針對第一數(shù)據(jù)的數(shù)據(jù)獲取請求時,從數(shù)據(jù)庫查找到相應(yīng)的更新后的第一數(shù)據(jù),并將更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中,保證了數(shù)據(jù)庫中的數(shù)據(jù)與緩存區(qū)域中緩存的對應(yīng)數(shù)據(jù)的一致性,從而保證了用戶可實時獲取到正確的數(shù)據(jù);同時,當(dāng)發(fā)生大量數(shù)據(jù)的更新時,可避免頻繁更新緩存區(qū)域中對應(yīng)的緩存數(shù)據(jù),降低了系統(tǒng)資源的消耗,提高數(shù)據(jù)的處理效率,并提升用戶的使用體驗。
本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
附圖說明
本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:
圖1為本發(fā)明中一個實施例的緩存數(shù)據(jù)的更新方法的流程示意圖;
圖2為本發(fā)明中另一實施例的緩存數(shù)據(jù)的更新裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關(guān)聯(lián)的列出項的全部或任一單元和全部組合。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。
圖1為本發(fā)明中一個實施例的緩存數(shù)據(jù)的更新方法的流程示意圖;
本發(fā)明的實施例中,各步驟所執(zhí)行的內(nèi)容概述如下:
步驟S110:監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)更新操作,當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程;
步驟S120:通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù);
步驟S130:接收到針對第一數(shù)據(jù)的數(shù)據(jù)獲取請求時,從數(shù)據(jù)庫查找到相應(yīng)的更新后的第一數(shù)據(jù),并將更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中。
本發(fā)明的實施例中,提出了一種緩存數(shù)據(jù)的更新方法,監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)更新操作,當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程,通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù),避免了當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,緩存區(qū)域中緩存的對應(yīng)數(shù)據(jù)為未更新的舊數(shù)據(jù)的情況,從而避免了用戶獲取到錯誤的數(shù)據(jù);接收到針對第一數(shù)據(jù)的數(shù)據(jù)獲取請求時,從數(shù)據(jù)庫查找到相應(yīng)的更新后的第一數(shù)據(jù),并將更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中,保證了數(shù)據(jù)庫中的數(shù)據(jù)與緩存區(qū)域中緩存的對應(yīng)數(shù)據(jù)的一致性,從而保證了用戶可實時獲取到正確的數(shù)據(jù);同時,當(dāng)發(fā)生大量數(shù)據(jù)的更新時,可避免頻繁更新緩存區(qū)域中對應(yīng)的緩存數(shù)據(jù),降低了系統(tǒng)資源的消耗,提高數(shù)據(jù)的處理效率,并提升用戶的使用體驗。以下針對各個步驟的具體實現(xiàn)做進一步的說明:
步驟S110:監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)更新操作,當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程。
具體地,監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)更新操作,當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域中的第一數(shù)據(jù)執(zhí)行對應(yīng)更新操作的進程。
例如,監(jiān)測數(shù)據(jù)庫(Data Base,DB)中的數(shù)據(jù)的更新操作,當(dāng)監(jiān)測到DB中的數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建進程,如process,process用于對緩存區(qū)域執(zhí)行操作。
優(yōu)選地,步驟S110中當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程的步驟進一步包括步驟S111(圖中未示出)、步驟S112(圖中未示出)和步驟S113(圖中未示出):
步驟S111:當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,獲取針對第一數(shù)據(jù)的更新反饋信息;
步驟S112:根據(jù)更新反饋信息,判斷第一數(shù)據(jù)是否更新成功;
步驟S113:若是,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程。
例如,通過數(shù)據(jù)庫,如DB,中的觸發(fā)器機制監(jiān)測數(shù)據(jù)庫DB中的數(shù)據(jù)的更新操作,當(dāng)監(jiān)測到DB中的數(shù)據(jù)A發(fā)生修改的更新操作時,獲取針對數(shù)據(jù)A的更新反饋信息,如“更新成功”,根據(jù)更新反饋信息“更新成功”,可判斷數(shù)據(jù)A更新成功,當(dāng)判斷數(shù)據(jù)A更新成功后,創(chuàng)建進程process,process用于對緩存區(qū)域執(zhí)行操作。
需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,監(jiān)測數(shù)據(jù)庫有不同的實現(xiàn)方式,本發(fā)明雖然會以特定的方式實現(xiàn)對數(shù)據(jù)庫的監(jiān)測,但并不對此進行限制。
步驟S120:通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù)。
例如,監(jiān)測數(shù)據(jù)庫DB中的數(shù)據(jù)的更新操作,當(dāng)監(jiān)測到DB中的數(shù)據(jù)A發(fā)生修改的更新操作時,創(chuàng)建進程process,隨后通過進程process刪除緩存區(qū)域中與數(shù)據(jù)庫DB中發(fā)生更新操作的數(shù)據(jù)A相應(yīng)的緩存數(shù)據(jù)A’。
優(yōu)選地,步驟S120進一步包括步驟S121(圖中未示出)和步驟S122(圖中未示出):
步驟S121:根據(jù)數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)的標(biāo)識信息,查找緩存區(qū)域中與第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù);
步驟S122:通過進程刪除緩存區(qū)域中與第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù)。
例如,監(jiān)測數(shù)據(jù)庫DB中的數(shù)據(jù)的更新操作,當(dāng)監(jiān)測到DB中的數(shù)據(jù)A發(fā)生修改的更新操作時,創(chuàng)建進程process;隨后根據(jù)數(shù)據(jù)庫DB中發(fā)生更新操作的數(shù)據(jù)A的標(biāo)識信息,如“ID=001”,在緩存區(qū)域,如MC1中,查找MC1中數(shù)據(jù)標(biāo)識信息為“ID=001”的緩存數(shù)據(jù)A’;隨后,通過進程process刪除MC1中的緩存數(shù)據(jù)A’。
在另一優(yōu)選實施例中,步驟S120進一步包括步驟S123(圖中未示出)和步驟S124(圖中未示出):
步驟S123:接收到運行進程的命令后,暫停運行進程;
步驟S124:在預(yù)定暫停時長后,運行進程,并通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù)。
例如,監(jiān)測數(shù)據(jù)庫DB中的數(shù)據(jù)的更新操作,當(dāng)監(jiān)測到DB中的數(shù)據(jù)A發(fā)生修改的更新操作時,創(chuàng)建進程process,根據(jù)DB中數(shù)據(jù)A的標(biāo)識信息“ID=001”查找到緩存區(qū)域MC1中數(shù)據(jù)標(biāo)識信息為“ID=001”的緩存數(shù)據(jù)A’,隨后啟動運行進程process的命令,當(dāng)MC1所在的服務(wù)器接收到運行進程process的命令后,暫停運行進程process,在預(yù)定暫停時長,如1秒后,再運行進程process,并通過進程process刪除MC1中的緩存數(shù)據(jù)A’。
通過本實施例,可以調(diào)度任何處理器的進程使用時間片,無論當(dāng)前是否存在有使用處理器的進程,在預(yù)定暫停時長后都會放棄占用處理器的時間,因此處理器占用率較低,提高了處理器的處理效率;同時,可保證數(shù)據(jù)庫中第一數(shù)據(jù)更新操作執(zhí)行完成后再執(zhí)行進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù),保證了數(shù)據(jù)庫中的第一數(shù)據(jù)與緩存區(qū)域中相應(yīng)的緩存數(shù)據(jù)的一致性,避免了因物理斷電或其它因素造成數(shù)據(jù)庫中第一數(shù)據(jù)更新操作未執(zhí)行完畢,而刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù)的情況。
步驟S130:接收到針對第一數(shù)據(jù)的數(shù)據(jù)獲取請求時,從數(shù)據(jù)庫查找到相應(yīng)的更新后的第一數(shù)據(jù),并將更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中。
具體地,接收到客戶端應(yīng)用程序發(fā)送針對第一數(shù)據(jù)的數(shù)據(jù)獲取請求時,從數(shù)據(jù)庫查找到相應(yīng)的更新后的第一數(shù)據(jù),并將更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中。
優(yōu)選地,步驟S130進一步包括步驟S131(圖中未示出)和步驟S132(圖中未示出):
步驟S131:依據(jù)第一數(shù)據(jù)的標(biāo)識信息,判斷緩存區(qū)域中是否緩存有與第一數(shù)據(jù)對應(yīng)的緩存數(shù)據(jù);
步驟S132:若判斷得到緩存區(qū)域中未緩存與第一數(shù)據(jù)對應(yīng)的緩存數(shù)據(jù),則從數(shù)據(jù)庫查找相應(yīng)的更新后的第一數(shù)據(jù),并將查找到的更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中。
例如,接收到客戶端應(yīng)用程序,如APP1,發(fā)送針對數(shù)據(jù)A的數(shù)據(jù)獲取請求時,依據(jù)數(shù)據(jù)A的標(biāo)識信息“ID=001”,判斷緩存區(qū)域MC1中是否緩存有與數(shù)據(jù)A對應(yīng)的標(biāo)識信息為“ID=001”的緩存數(shù)據(jù)A’;當(dāng)判斷得到MC1中未緩存與數(shù)據(jù)A對應(yīng)的緩存數(shù)據(jù)A’,則從數(shù)據(jù)庫DB中查找標(biāo)識信息為“ID=001”的更新后的數(shù)據(jù)A,并將更新后的數(shù)據(jù)A存儲至MC1中,隨后,MC1將對應(yīng)的緩存數(shù)據(jù)A’發(fā)送至APP1。
在一優(yōu)選實施例中,緩存區(qū)域中緩存數(shù)據(jù)具有預(yù)定的過期時間周期,該方法還包括步驟S140(圖中未示出)和步驟S150(圖中未示出):
步驟S140根據(jù)預(yù)定的過期時間周期,判斷緩存區(qū)域中的緩存數(shù)據(jù)是否過期;
步驟S150:當(dāng)判斷緩存數(shù)據(jù)過期時,刪除已過期的緩存數(shù)據(jù)。
例如,緩存區(qū)域MC1中緩存數(shù)據(jù)具有預(yù)定的過期時間周期,如5分鐘,在MC1中緩存數(shù)據(jù)的同時,添加緩存數(shù)據(jù)的時間戳信息,如在MC1中緩存數(shù)據(jù)A’的同時,添加緩存數(shù)據(jù)A’的時間戳信息“2016-07-20 12:00”,根據(jù)預(yù)定的檢查過期數(shù)據(jù)的方法,如每隔5分鐘判斷一次MC1中緩存的數(shù)據(jù)是否過期,如在“2016-07-20 12:01”時啟動檢查過期數(shù)據(jù)的操作,根據(jù)預(yù)定的過期時間周期5分鐘,可判斷MC1中的緩存數(shù)據(jù)A未過期;隨后在“2016-07-20 12:06”時啟動檢查過期數(shù)據(jù)的操作,根據(jù)預(yù)定的過期時間周期5分鐘以及緩存數(shù)據(jù)A’的時間戳信息“2016-07-20 12:00”,可判斷MC1中的緩存數(shù)據(jù)A’過期,隨后刪除已過期的緩存數(shù)據(jù)A’。
在一具體應(yīng)用場景中,用戶在“2016-07-20 13:00:01”時,通過電商網(wǎng)站購買5件商品B,單件商品B的價格為100元人民幣,此時電商網(wǎng)站的折扣信息為5折,隨后用戶在電商網(wǎng)站中與該用戶對應(yīng)的購物車頁面內(nèi)選擇了兌換電商網(wǎng)站提供的抵用券,在“2016-07-20 13:00:10”時,用戶點擊“確認(rèn)購買”按鈕,隨后電商網(wǎng)站的服務(wù)器接收到用戶的購買請求后,計算用戶可使用抵用券的額度大小等操作,計算完成確定抵用券的額度的時間為“2016-07-20 13:00:10.05”,同時電商網(wǎng)站在“2016-07-20 13:00:10.01”時將折扣信息由5折修改為7折,當(dāng)監(jiān)測到數(shù)據(jù)庫DB1中的折扣信息數(shù)據(jù)discount發(fā)生更新操作時,隨后啟動運行進程process1的命令,當(dāng)MC2所在的服務(wù)器接收到運行進程process1的命令后,暫停運行進程process1,在預(yù)定暫停時長,如3毫秒后,即在“2016-07-20 13:00:10.03”時再運行進程process1,并通過進程process1刪除MC2中與數(shù)據(jù)庫DB1中發(fā)生更新操作的折扣信息數(shù)據(jù)discount相應(yīng)的緩存數(shù)據(jù)discount’,此時刪除的discount’值為“5折”;當(dāng)計算完成確定抵用券的額度后,在“2016-07-20 13:00:10.05”時,依據(jù)DB1中discount的標(biāo)識信息,如“ID=002”,判斷MC2中不存在標(biāo)識信息為“ID=002”的緩存折扣信息數(shù)據(jù)discount’,則從數(shù)據(jù)庫DB1查找標(biāo)識信息為“ID=002”的折扣信息數(shù)據(jù)discount,discount的值為7折,并將查找到的更新后的折扣信息數(shù)據(jù)discount存儲至MC2中,隨后,MC2將緩存數(shù)據(jù)discount’,此時discount’值為“7折”,發(fā)送至用戶登錄的電商網(wǎng)站,隨后顯示用戶確認(rèn)訂單信息的頁面,該頁面中顯示用戶購買5件B商品金額為350元人民幣。
圖2為本發(fā)明中另一實施例的緩存數(shù)據(jù)的更新裝置的結(jié)構(gòu)示意圖。
本發(fā)明的實施例中,各模塊所執(zhí)行的內(nèi)容概述如下:
監(jiān)測及創(chuàng)建模塊210監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)更新操作,當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程;
第一刪除模塊220通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù);
更新模塊230接收到針對第一數(shù)據(jù)的數(shù)據(jù)獲取請求時,從數(shù)據(jù)庫查找到相應(yīng)的更新后的第一數(shù)據(jù),并將更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中。
本發(fā)明的實施例中,提出了一種緩存數(shù)據(jù)的更新裝置,監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)更新操作,當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程,通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù),避免了當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,緩存區(qū)域中緩存的對應(yīng)數(shù)據(jù)為未更新的舊數(shù)據(jù)的情況,從而避免了用戶獲取到錯誤的數(shù)據(jù);接收到針對第一數(shù)據(jù)的數(shù)據(jù)獲取請求時,從數(shù)據(jù)庫查找到相應(yīng)的更新后的第一數(shù)據(jù),并將更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中,保證了數(shù)據(jù)庫中的數(shù)據(jù)與緩存區(qū)域中緩存的對應(yīng)數(shù)據(jù)的一致性,從而保證了用戶可實時獲取到正確的數(shù)據(jù);同時,當(dāng)發(fā)生大量數(shù)據(jù)的更新時,可避免頻繁更新緩存區(qū)域中對應(yīng)的緩存數(shù)據(jù),降低了系統(tǒng)資源的消耗,提高數(shù)據(jù)的處理效率,并提升用戶的使用體驗。以下針對各個模塊的具體實現(xiàn)做進一步的說明:
監(jiān)測及創(chuàng)建模塊210監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)更新操作,當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程。
具體地,監(jiān)測數(shù)據(jù)庫中的數(shù)據(jù)更新操作,當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建對緩存區(qū)域中的第一數(shù)據(jù)執(zhí)行對應(yīng)更新操作的進程。
例如,監(jiān)測數(shù)據(jù)庫,如DB,中的數(shù)據(jù)的更新操作,當(dāng)監(jiān)測到DB中的數(shù)據(jù)發(fā)生更新操作時,創(chuàng)建進程,如process,process用于對緩存區(qū)域執(zhí)行操作。
優(yōu)選地,監(jiān)測及創(chuàng)建模塊210進一步包括獲取單元(圖中未示出)、第一判斷單元(圖中未示出)和創(chuàng)建單元(圖中未示出):
獲取單元當(dāng)監(jiān)測到第一數(shù)據(jù)發(fā)生更新操作時,獲取針對第一數(shù)據(jù)的更新反饋信息;
第一判斷單元根據(jù)更新反饋信息,判斷第一數(shù)據(jù)是否更新成功;
若判斷第一數(shù)據(jù)更新成功時,創(chuàng)建單元創(chuàng)建對緩存區(qū)域執(zhí)行操作的進程。
例如,通過數(shù)據(jù)庫,如DB,中的觸發(fā)器機制監(jiān)測數(shù)據(jù)庫DB中的數(shù)據(jù)的更新操作,當(dāng)監(jiān)測到DB中的數(shù)據(jù)A發(fā)生修改的更新操作時,獲取針對數(shù)據(jù)A的更新反饋信息,如“更新成功”,根據(jù)更新反饋信息“更新成功”,可判斷數(shù)據(jù)A更新成功,當(dāng)判斷數(shù)據(jù)A更新成功后,創(chuàng)建進程process,process用于對緩存區(qū)域執(zhí)行操作。
需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,監(jiān)測數(shù)據(jù)庫有不同的實現(xiàn)方式,本發(fā)明雖然會以特定的方式實現(xiàn)對數(shù)據(jù)庫的監(jiān)測,但并不對此進行限制。
第一刪除模塊220通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù)。
例如,監(jiān)測數(shù)據(jù)庫DB中的數(shù)據(jù)的更新操作,當(dāng)監(jiān)測到DB中的數(shù)據(jù)A發(fā)生修改的更新操作時,創(chuàng)建進程process,隨后通過進程process刪除緩存區(qū)域中與數(shù)據(jù)庫DB中發(fā)生更新操作的數(shù)據(jù)A相應(yīng)的緩存數(shù)據(jù)A’。
優(yōu)選地,第一刪除模塊220進一步包括查找單元(圖中未示出)和刪除單元(圖中未示出):
查找單元根據(jù)數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)的標(biāo)識信息,查找緩存區(qū)域中與第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù);
刪除單元通過進程刪除緩存區(qū)域中與第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù)。
例如,監(jiān)測數(shù)據(jù)庫DB中的數(shù)據(jù)的更新操作,當(dāng)監(jiān)測到DB中的數(shù)據(jù)A發(fā)生修改的更新操作時,創(chuàng)建進程process;隨后根據(jù)數(shù)據(jù)庫DB中發(fā)生更新操作的數(shù)據(jù)A的標(biāo)識信息,如“ID=001”,在緩存區(qū)域,如MC1中,查找MC1中數(shù)據(jù)標(biāo)識信息為“ID=001”的緩存數(shù)據(jù)A’;隨后,通過進程process刪除MC1中的緩存數(shù)據(jù)A’。
在另一優(yōu)選實施例中,第一刪除模塊220進一步包括暫停單元(圖中未示出)和運行及刪除單元(圖中未示出):
暫停單元接收到運行進程的命令后,暫停運行進程;
運行及刪除單元在預(yù)定暫停時長后,運行進程,并通過進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù)。
例如,監(jiān)測數(shù)據(jù)庫DB中的數(shù)據(jù)的更新操作,當(dāng)監(jiān)測到DB中的數(shù)據(jù)A發(fā)生修改的更新操作時,創(chuàng)建進程process,根據(jù)DB中數(shù)據(jù)A的標(biāo)識信息“ID=001”查找到緩存區(qū)域MC1中數(shù)據(jù)標(biāo)識信息為“ID=001”的緩存數(shù)據(jù)A’,隨后啟動運行進程process的命令,當(dāng)MC1所在的服務(wù)器接收到運行進程process的命令后,暫停運行進程process,在預(yù)定暫停時長,如1秒后,再運行進程process,并通過進程process刪除MC1中的緩存數(shù)據(jù)A’。
通過本實施例,可以調(diào)度任何處理器的進程使用時間片,無論當(dāng)前是否存在有使用處理器的進程,在預(yù)定暫停時長后都會放棄占用處理器的時間,因此處理器占用率較低,提高了處理器的處理效率;同時,可保證數(shù)據(jù)庫中第一數(shù)據(jù)更新操作執(zhí)行完成后再執(zhí)行進程刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù),保證了數(shù)據(jù)庫中的第一數(shù)據(jù)與緩存區(qū)域中相應(yīng)的緩存數(shù)據(jù)的一致性,避免了因物理斷電或其它因素造成數(shù)據(jù)庫中第一數(shù)據(jù)更新操作未執(zhí)行完畢,而刪除緩存區(qū)域中與數(shù)據(jù)庫中發(fā)生更新操作的第一數(shù)據(jù)相應(yīng)的緩存數(shù)據(jù)的情況。
更新模塊230接收到針對第一數(shù)據(jù)的數(shù)據(jù)獲取請求時,從數(shù)據(jù)庫查找到相應(yīng)的更新后的第一數(shù)據(jù),并將更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中。
具體地,接收到客戶端應(yīng)用程序發(fā)送針對第一數(shù)據(jù)的數(shù)據(jù)獲取請求時,從數(shù)據(jù)庫查找到相應(yīng)的更新后的第一數(shù)據(jù),并將更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中。
優(yōu)選地,更新模塊230進一步包括第二判斷單元(圖中未示出)和查找及更新單元(圖中未示出):
第二判斷單元依據(jù)第一數(shù)據(jù)的標(biāo)識信息,判斷緩存區(qū)域中是否緩存有與第一數(shù)據(jù)對應(yīng)的緩存數(shù)據(jù);
查找及更新單元若判斷得到緩存區(qū)域中未緩存與第一數(shù)據(jù)對應(yīng)的緩存數(shù)據(jù),則從數(shù)據(jù)庫查找相應(yīng)的更新后的第一數(shù)據(jù),并將查找到的更新后的第一數(shù)據(jù)存儲至緩存區(qū)域中。
例如,接收到客戶端應(yīng)用程序,如APP1,發(fā)送針對數(shù)據(jù)A的數(shù)據(jù)獲取請求時,依據(jù)數(shù)據(jù)A的標(biāo)識信息“ID=001”,判斷緩存區(qū)域MC1中是否緩存有與數(shù)據(jù)A對應(yīng)的標(biāo)識信息為“ID=001”的緩存數(shù)據(jù)A’;當(dāng)判斷得到MC1中未緩存與數(shù)據(jù)A對應(yīng)的緩存數(shù)據(jù)A’,則從數(shù)據(jù)庫DB中查找標(biāo)識信息為“ID=001”的更新后的數(shù)據(jù)A,并將更新后的數(shù)據(jù)A存儲至MC1中,隨后,MC1將對應(yīng)的緩存數(shù)據(jù)A’發(fā)送至APP1。
在一優(yōu)選實施例中,緩存區(qū)域中緩存數(shù)據(jù)具有預(yù)定的過期時間周期,該裝置還包括判斷模塊(圖中未示出)和第二刪除模塊(圖中未示出):
判斷模塊根據(jù)預(yù)定的過期時間周期,判斷緩存區(qū)域中的緩存數(shù)據(jù)是否過期;
第二刪除模塊當(dāng)判斷緩存數(shù)據(jù)過期時,刪除已過期的緩存數(shù)據(jù)。
例如,緩存區(qū)域MC1中緩存數(shù)據(jù)具有預(yù)定的過期時間周期,如5分鐘,在MC1中緩存數(shù)據(jù)的同時,添加緩存數(shù)據(jù)的時間戳信息,如在MC1中緩存數(shù)據(jù)A’的同時,添加緩存數(shù)據(jù)A’的時間戳信息“2016-07-20 12:00”,根據(jù)預(yù)定的檢查過期數(shù)據(jù)的方法,如每隔5分鐘判斷一次MC1中緩存的數(shù)據(jù)是否過期,如在“2016-07-20 12:01”時啟動檢查過期數(shù)據(jù)的操作,根據(jù)預(yù)定的過期時間周期5分鐘,可判斷MC1中的緩存數(shù)據(jù)A未過期;隨后在“2016-07-20 12:06”時啟動檢查過期數(shù)據(jù)的操作,根據(jù)預(yù)定的過期時間周期5分鐘以及緩存數(shù)據(jù)A’的時間戳信息“2016-07-20 12:00”,可判斷MC1中的緩存數(shù)據(jù)A’過期,隨后刪除已過期的緩存數(shù)據(jù)A’。
在一具體應(yīng)用場景中,用戶在“2016-07-20 13:00:01”時,通過電商網(wǎng)站購買5件商品B,單件商品B的價格為100元人民幣,此時電商網(wǎng)站的折扣信息為5折,隨后用戶在電商網(wǎng)站中與該用戶對應(yīng)的購物車頁面內(nèi)選擇了兌換電商網(wǎng)站提供的抵用券,在“2016-07-20 13:00:10”時,用戶點擊“確認(rèn)購買”按鈕,隨后電商網(wǎng)站的服務(wù)器接收到用戶的購買請求后,計算用戶可使用抵用券的額度大小等操作,計算完成確定抵用券的額度的時間為“2016-07-20 13:00:10.05”,同時電商網(wǎng)站在“2016-07-20 13:00:10.01”時將折扣信息由5折修改為7折,當(dāng)監(jiān)測到數(shù)據(jù)庫DB1中的折扣信息數(shù)據(jù)discount發(fā)生更新操作時,隨后啟動運行進程process1的命令,當(dāng)MC2所在的服務(wù)器接收到運行進程process1的命令后,暫停運行進程process1,在預(yù)定暫停時長,如3毫秒后,即在“2016-07-20 13:00:10.03”時再運行進程process1,并通過進程process1刪除MC2中與數(shù)據(jù)庫DB1中發(fā)生更新操作的折扣信息數(shù)據(jù)discount相應(yīng)的緩存數(shù)據(jù)discount’,此時刪除的discount’值為“5折”;當(dāng)計算完成確定抵用券的額度后,在“2016-07-20 13:00:10.05”時,依據(jù)DB1中discount的標(biāo)識信息,如“ID=002”,判斷MC2中不存在標(biāo)識信息為“ID=002”的緩存折扣信息數(shù)據(jù)discount’,則從數(shù)據(jù)庫DB1查找標(biāo)識信息為“ID=002”的折扣信息數(shù)據(jù)discount,discount的值為7折,并將查找到的更新后的折扣信息數(shù)據(jù)discount存儲至MC2中,隨后,MC2將緩存數(shù)據(jù)discount’,此時discount’值為“7折”,發(fā)送至用戶登錄的電商網(wǎng)站,隨后顯示用戶確認(rèn)訂單信息的頁面,該頁面中顯示用戶購買5件B商品金額為350元人民幣。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請中所述操作中的一項或多項的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計和制造,或者也可以包括通用計算機中的已知設(shè)備。這些設(shè)備具有存儲在其內(nèi)的計算機程序,這些計算機程序選擇性地激活或重構(gòu)。這樣的計算機程序可以被存儲在設(shè)備(例如,計算機)可讀介質(zhì)中或者存儲在適于存儲電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計算機可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、CD-ROM、和磁光盤)、ROM(Read-Only Memory,只讀存儲器)、RAM(Random Access Memory,隨即存儲器)、EPROM(Erasable Programmable Read-Only Memory,可擦寫可編程只讀存儲器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦可編程只讀存儲器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計算機)以能夠讀的形式存儲或傳輸信息的任何介質(zhì)。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以用計算機程序指令來實現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以將這些計算機程序指令提供給通用計算機、專業(yè)計算機或其他可編程數(shù)據(jù)處理方法的處理器來實現(xiàn),從而通過計算機或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個框中指定的方案。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
以上所述僅是本發(fā)明的部分實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。