本發(fā)明涉及緩存管理技術(shù)領(lǐng)域,特別涉及一種自適應(yīng)更新緩存策略的方法及系統(tǒng)。
背景技術(shù):
現(xiàn)有的更新緩存的策略有兩種,分別寫更新策略,和寫失效策略。所述寫更新策略是指在數(shù)據(jù)更新后更新對應(yīng)緩存中的數(shù)據(jù),這種策略需要傳送更新的數(shù)據(jù)到緩存,適用于讀多寫少的業(yè)務(wù)場景。所以寫失效策略是指數(shù)據(jù)更新后設(shè)置緩存中對應(yīng)數(shù)據(jù)失效,這種策略只需要傳送失效信號給緩存,適用于讀少寫多的業(yè)務(wù)場景。
目前通用的緩存更新方式是根據(jù)數(shù)據(jù)更新情況設(shè)置為讀更新或者讀失效。但是存在一些業(yè)務(wù)場景,對于同一數(shù)據(jù)部分時間更新數(shù)據(jù)頻繁,部分時間讀取數(shù)據(jù)頻繁。若設(shè)置為寫更新,則在用戶頻繁更新的時間段內(nèi),數(shù)據(jù)服務(wù)會大量傳送更新數(shù)據(jù)給緩存服務(wù),而此時其實緩存中的數(shù)據(jù)很少被用戶查詢,產(chǎn)生無效的更新步驟,降低系統(tǒng)的工作效率。
因而現(xiàn)有技術(shù)還有待改進(jìn)和提高。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的不足,提供一種自適應(yīng)更新緩存策略的方法及系統(tǒng),以解決現(xiàn)有緩存更新策略無法根據(jù)數(shù)據(jù)被訪問的情況而自動調(diào)節(jié)緩存策略的問題。
為了解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案如下:
一種自適應(yīng)更新緩存策略的方法,其包括:
對業(yè)務(wù)層的緩存數(shù)據(jù)進(jìn)行監(jiān)控,并分別記錄所述緩存數(shù)據(jù)在預(yù)設(shè)時間間隔內(nèi)被讀寫的次數(shù);
根據(jù)所述緩存數(shù)據(jù)被讀寫的次數(shù)計算讀寫計數(shù)比;
根據(jù)所述讀寫計數(shù)比更新所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略。
所述自適應(yīng)更新緩存策略的方法,其中,所述根據(jù)所述讀寫計數(shù)比更新所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略具體包括:
將所述讀寫計數(shù)比與預(yù)設(shè)讀寫比閾值進(jìn)行比較;
當(dāng)所述讀寫計數(shù)比大于等于預(yù)設(shè)讀寫比閾值時,將所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略更新為第一緩存策略;
當(dāng)所述讀寫計數(shù)比小于預(yù)設(shè)讀寫比閾值時,將所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略更新為第二緩存策略。
所述自適應(yīng)更新緩存策略的方法,其中,所述第一緩存策略為寫更新策略;所述第二緩存策略為寫失效策略。
所述自適應(yīng)更新緩存策略的方法,其中,所述根據(jù)所述緩存數(shù)據(jù)被讀寫的次數(shù)計算讀寫計數(shù)比具體包括:
讀取所述緩存數(shù)據(jù)的被讀次數(shù)及更新次數(shù);
將所述緩存數(shù)據(jù)的被讀次數(shù)與更新次數(shù)相除以得到讀寫計數(shù)比。
所述自適應(yīng)更新緩存策略的方法,其中,所述根據(jù)所述讀寫計數(shù)比更新所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略之后還包括:
將記錄的被讀次數(shù)及更新次數(shù)歸零。
一種自適應(yīng)更新緩存策略的系統(tǒng),其包括:
記錄模塊,用于對業(yè)務(wù)層的緩存數(shù)據(jù)進(jìn)行監(jiān)控,并分別記錄所述緩存數(shù)據(jù)在預(yù)設(shè)時間間隔內(nèi)被讀寫的次數(shù);
計算模塊,用于根據(jù)所述緩存數(shù)據(jù)被讀寫的次數(shù)計算讀寫計數(shù)比;
更新模塊,用于根據(jù)所述讀寫計數(shù)比更新所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略。
所述自適應(yīng)更新緩存策略的系統(tǒng),其中,所述更新模塊具體包括:
比較單元,用于將所述讀寫計數(shù)比與預(yù)設(shè)讀寫比閾值進(jìn)行比較;
第一更新單元,用于當(dāng)所述讀寫計數(shù)比大于等于預(yù)設(shè)讀寫比閾值時,將所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略更新為第一緩存策略;
第二更新單元,用于當(dāng)所述讀寫計數(shù)比小于預(yù)設(shè)讀寫比閾值時,將所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略更新為第二緩存策略。
所述自適應(yīng)更新緩存策略的系統(tǒng),其中,所述第一緩存策略為寫更新策略;所述第二緩存策略為寫失效策略。
所述自適應(yīng)更新緩存策略的系統(tǒng),其中,所述計算模塊具體包括:
讀取單元,用于讀取所述緩存數(shù)據(jù)的被讀次數(shù)及更新次數(shù);
計算單元,用于將所述緩存數(shù)據(jù)的被讀次數(shù)與更新次數(shù)相除以得到讀寫計數(shù)比。
所述自適應(yīng)更新緩存策略的系統(tǒng),其還包括:
歸零模塊,用于將記錄的被讀次數(shù)及更新次數(shù)歸零。
有益效果:與現(xiàn)有技術(shù)相比,本發(fā)明提供了一種自適應(yīng)更新緩存策略的方法及系統(tǒng),所述方法包括:對業(yè)務(wù)層的緩存數(shù)據(jù)進(jìn)行監(jiān)控,并分別記錄所述緩存數(shù)據(jù)在預(yù)設(shè)時間間隔內(nèi)被讀寫的次數(shù);根據(jù)所述緩存數(shù)據(jù)被讀寫的次數(shù)計算讀寫計數(shù)比;根據(jù)所述讀寫計數(shù)比更新所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略。本發(fā)明通過記錄緩存數(shù)據(jù)被讀寫次數(shù)的比例來更新緩存策略,避免了當(dāng)同一數(shù)據(jù)緩存在某一時間段內(nèi)被用戶頻繁查詢,另一時間段又被頻繁更新時,緩存策略與數(shù)據(jù)緩存被執(zhí)行的操作不適用的問題。
附圖說明
圖1為本發(fā)明提供的自適應(yīng)更新緩存策略的方法較佳實施的流程圖。
圖2為本發(fā)明提供的自適應(yīng)更新緩存策略的系統(tǒng)的結(jié)構(gòu)原理圖。
具體實施方式
本發(fā)明提供一種自適應(yīng)更新緩存策略的方法及系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下參照附圖并舉實施例對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說明,其本身并沒有特定的意義。因此,模塊”、“部件”或“單元”可以混合地使用。
終端設(shè)備可以以各種形式來實施。例如,本發(fā)明中描述的終端可以包括諸如移動電話、智能電話、筆記本電腦、數(shù)字廣播接收器、PDA(個人數(shù)字助理)、PAD(平板電腦)、PMP(便攜式多媒體播放器)、導(dǎo)航裝置等等的移動終端以及諸如數(shù)字TV、臺式計算機(jī)等等的固定終端。然而,本領(lǐng)域技術(shù)人員將理解的是,除了特別用于移動目的的元件之外,根據(jù)本發(fā)明的實施方式的構(gòu)造也能夠應(yīng)用于固定類型的終端。
下面結(jié)合附圖,通過對實施例的描述,對發(fā)明內(nèi)容作進(jìn)一步說明。
請參照圖1,圖1為本發(fā)明提供的自適應(yīng)更新緩存策略的方法的較佳實施例的流程圖。所述方法包括:
S100、對業(yè)務(wù)層的緩存數(shù)據(jù)進(jìn)行監(jiān)控,并分別記錄所述緩存數(shù)據(jù)在預(yù)設(shè)時間間隔內(nèi)被讀寫的次數(shù)。
具體地,所述對業(yè)務(wù)層的所有數(shù)據(jù)進(jìn)行監(jiān)控,即監(jiān)控每個緩存數(shù)據(jù)被訪問的次數(shù)。在監(jiān)控到被訪問行為時,判斷所述訪問行為讀取操作還是寫入操作,當(dāng)為讀取操作時,所述訪問行為對應(yīng)的緩存數(shù)據(jù)被讀取次數(shù)加1;當(dāng)為寫入操作時,所述訪問行為對應(yīng)的緩存數(shù)據(jù)的更新次數(shù)加1。也就是說,業(yè)務(wù)層的每個緩存數(shù)據(jù)都記錄其被讀寫的次數(shù),并且在后續(xù)操作過程中,每個緩存數(shù)據(jù)都會根據(jù)被讀寫次數(shù)比來調(diào)整緩存策略。在本實施例中,僅以一個緩存數(shù)據(jù)為例加以說明。即所述對業(yè)務(wù)層的緩存數(shù)據(jù)進(jìn)行監(jiān)控,并分別記錄所述緩存數(shù)據(jù)在預(yù)設(shè)時間間隔內(nèi)被讀寫的次數(shù)可為對業(yè)務(wù)層的指定緩存數(shù)據(jù)進(jìn)行監(jiān)控,并記錄所述緩存數(shù)據(jù)在預(yù)設(shè)時間間隔內(nèi)被讀寫的次數(shù)。也就是說,記錄同一緩存數(shù)據(jù)在預(yù)設(shè)時間間隔內(nèi)被讀寫的次數(shù)。
所述預(yù)設(shè)時間間隔為預(yù)先設(shè)定用于確定讀寫次數(shù)的時間斷,例如,5分鐘等。所述預(yù)設(shè)時間間隔可以是系統(tǒng)默認(rèn)的,也可以是根據(jù)不同業(yè)務(wù)進(jìn)行調(diào)整。
在本實施例中,所述對業(yè)務(wù)層的緩存數(shù)據(jù)進(jìn)行監(jiān)控可以通過在服務(wù)的業(yè)務(wù)層增設(shè)一個監(jiān)控模塊,通過所述監(jiān)控模塊用于負(fù)責(zé)監(jiān)控客戶端訪問服務(wù)的行為,并記錄緩存數(shù)據(jù)在預(yù)設(shè)時間間隔t(如5分鐘)內(nèi)被客戶端讀取的次數(shù)()以及寫入的次數(shù)()。所述緩存數(shù)據(jù)與一個緩存的key對應(yīng)。這樣根據(jù)所述緩存數(shù)據(jù)可以確定與其對應(yīng)的緩存數(shù)據(jù),以便后續(xù)調(diào)整所述緩存的更新策略。
S200、根據(jù)所述緩存數(shù)據(jù)被讀寫的次數(shù)計算讀寫計數(shù)比。
具體地,所述讀寫計數(shù)比指的是被讀取次數(shù)與更新次數(shù)的比值。所述讀寫計數(shù)比的計數(shù)公式可以為:
其中,k為讀寫次數(shù)比,為被讀取次數(shù),為更新次數(shù)。
所述讀寫計數(shù)比的計數(shù)公式可以看出得出在預(yù)設(shè)時間間隔內(nèi)所述緩存數(shù)據(jù)被讀取次數(shù)和更新次數(shù)之間的關(guān)系,即在預(yù)設(shè)時間間隔內(nèi)是被讀取次數(shù)多還是更新次數(shù)多,進(jìn)而可以根據(jù)緩存數(shù)據(jù)被讀寫的情況來自動調(diào)節(jié)緩存策略。
示例性的,所述根據(jù)所述緩存數(shù)據(jù)被讀寫的次數(shù)計算讀寫計數(shù)比具體可以包括:
S201、讀取所述緩存數(shù)據(jù)的被讀次數(shù)及更新次數(shù);
S202、將所述緩存數(shù)據(jù)的被讀次數(shù)與更新次數(shù)相除以得到讀寫計數(shù)比。
具體地,所述讀取所述緩存數(shù)據(jù)的被讀次數(shù)及更新次數(shù)是讀取監(jiān)控模塊記錄的該緩存數(shù)據(jù)被讀次數(shù)及更新次數(shù)。在實際應(yīng)用中,采用第一計數(shù)器記錄所述業(yè)務(wù)被讀次數(shù),第二計數(shù)器記錄所述業(yè)務(wù)更新次數(shù)。在讀取時,可以直接通過讀取第一計數(shù)器和第二計數(shù)器的數(shù)值來得到。
S300、根據(jù)所述讀寫計數(shù)比更新所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略。
具體地,所述緩存策略為預(yù)先存儲的緩存策略,所述緩存策略包括第一緩存策略和第二緩存策略,用于根據(jù)讀寫計數(shù)比的不同而選擇不同的緩存策略。在本實施例中,所述第一緩存策略為寫更新策略;所述第二緩存策略為寫失效策略。所述寫更新策略為在數(shù)據(jù)更新后更新對應(yīng)緩存中的數(shù)據(jù);寫失效策略是指數(shù)據(jù)更新后設(shè)置緩存中對應(yīng)數(shù)據(jù)失效。
示例性的,所述根據(jù)所述讀寫計數(shù)比更新所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略具體包括:
S301、將所述讀寫計數(shù)比與預(yù)設(shè)讀寫比閾值進(jìn)行比較;
S302當(dāng)所述讀寫計數(shù)比大于等于預(yù)設(shè)讀寫比閾值時,將所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略更新為第一緩存策略;
S303、當(dāng)所述讀寫計數(shù)比小于預(yù)設(shè)讀寫比閾值時,將所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略更新為第二緩存策略。
具體的來說,在所述步驟S301中,所述預(yù)設(shè)讀寫比閾值為預(yù)先設(shè)置,其作為常數(shù)放在服務(wù)配置中,當(dāng)需要將讀寫比與預(yù)設(shè)讀寫比閾值進(jìn)行比較時,從服務(wù)配置中讀取。所述讀寫比閾值可以根據(jù)實際操作不同而設(shè)置不同的值,例如,通過比較緩存更新性能以得到讀寫比閾值。
在所述步驟S302中,當(dāng)所述讀寫計數(shù)比大于等于預(yù)設(shè)讀寫比閾值時,說明客戶端對所述緩存數(shù)據(jù)進(jìn)行的訪問操作為讀取多寫入少,從而將所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略更新為第一緩存策略,即寫更新策略。
在所述步驟S303中,當(dāng)所述讀寫計數(shù)比小于預(yù)設(shè)讀寫比閾值時,說明客戶端對所述緩存數(shù)據(jù)進(jìn)行的訪問操作為讀取少寫入多,從而將所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略更新為第二緩存策略,即寫失效策略。
在本發(fā)明的一個實施例中,所述根據(jù)所述讀寫計數(shù)比更新所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略具體可以包括:
S300a、根據(jù)所述讀寫計數(shù)比確定其對應(yīng)的更新后緩存策略,并獲取緩存數(shù)據(jù)對應(yīng)的緩存的當(dāng)前緩存策略;
S300b、將所述更新后緩存策略與當(dāng)前緩存策略進(jìn)行比較;
S300c、如果相同,則保持所述緩存的緩存策略不變;
S300d、如果不同,則將所述緩存的緩存策略更新為更新后的緩存策略。
具體地,所述根據(jù)所述讀寫比確定其對應(yīng)的更新后的緩存策略具體可以將讀寫比與預(yù)設(shè)讀寫比閾值進(jìn)行比較的方式確定,對應(yīng)具體的比較和確定過程在上述實施例中已經(jīng)說明,這里就不再贅述。所述更新后的緩存策略可以為寫更新策略和寫失效策略,所述當(dāng)前更新策略也可以為寫更新策略和寫失效策略。本實施例通過將根據(jù)讀寫比對確定更新后的緩存策略與當(dāng)前緩存策略進(jìn)行比較,僅在兩者不同的情況下進(jìn)行更新。這樣在使得更新策略與訪問行為相符合的情況下,還可以盡量減少更新緩存策略的次數(shù),避免了高頻率更新緩存策略給系統(tǒng)帶來的壓力。
在本發(fā)明的另一個實施例中,所述根據(jù)所述讀寫計數(shù)比更新所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略之后還包括:
S400、將記錄的被讀次數(shù)及更新次數(shù)歸零。
具體地,在根據(jù)讀寫比對緩存策略進(jìn)行更新后,將記錄的所述緩存數(shù)據(jù)的被讀次數(shù)及更新次數(shù)歸零,即從新開始記錄所述緩存數(shù)據(jù)被讀次數(shù)及更新次數(shù)歸零。這樣可以準(zhǔn)確的反應(yīng)預(yù)設(shè)時間間隔內(nèi)緩存數(shù)據(jù)被讀寫的準(zhǔn)確情況,進(jìn)而提高緩存策略的準(zhǔn)確性。
本發(fā)明還提供了一種自適應(yīng)更新緩存策略的系統(tǒng),如圖2所示,其包括:
記錄模塊100,用于對業(yè)務(wù)層的緩存數(shù)據(jù)進(jìn)行監(jiān)控,并分別記錄所述緩存數(shù)據(jù)在預(yù)設(shè)時間間隔內(nèi)被讀寫的次數(shù);
計算模塊200,用于根據(jù)所述緩存數(shù)據(jù)被讀寫的次數(shù)計算讀寫計數(shù)比;
更新模塊300,用于根據(jù)所述讀寫計數(shù)比更新所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略。
所述自適應(yīng)更新緩存策略的系統(tǒng),其中,所述更新模塊具體包括:
比較單元,用于將所述讀寫計數(shù)比與預(yù)設(shè)讀寫比閾值進(jìn)行比較;
第一更新單元,用于當(dāng)所述讀寫計數(shù)比大于等于預(yù)設(shè)讀寫比閾值時,將所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略更新為第一緩存策略;
第二更新單元,用于當(dāng)所述讀寫計數(shù)比小于預(yù)設(shè)讀寫比閾值時,將所述緩存數(shù)據(jù)對應(yīng)緩存的緩存策略更新為第二緩存策略。
所述自適應(yīng)更新緩存策略的系統(tǒng),其中,所述第一緩存策略為寫更新策略;所述第二緩存策略為寫失效策略。
所述自適應(yīng)更新緩存策略的系統(tǒng),其中,所述計算模塊具體包括:
讀取單元,用于讀取所述緩存數(shù)據(jù)的被讀次數(shù)及更新次數(shù);
計算單元,用于將所述緩存數(shù)據(jù)的被讀次數(shù)與更新次數(shù)相除以得到讀寫計數(shù)比。
所述自適應(yīng)更新緩存策略的系統(tǒng),其還包括:
歸零模塊,用于將記錄的被讀次數(shù)及更新次數(shù)歸零。
上述自適應(yīng)更新緩存策略的系統(tǒng)的各個模塊在上述方法中已經(jīng)詳細(xì)說明,在這里就不再一一陳述。
在本發(fā)明所提供的實施例中,應(yīng)該理解到,所揭露的系統(tǒng)和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory,ROM)、隨機(jī)存取存儲器(Random Access Memory,RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。