簡單快取及快取表應用入門
阿新 • • 發佈:2018-10-31
業務需求:源資料庫比較龐大,一個簡單查詢都要幾秒到十幾秒。現在需要統計某日的部分資料,比如當天有多少使用者登入之類,需要按天統計,還需要有個功能要合計。如果一天天去查詢,查一次耗費的時間都很長,不用快取的話,下次再查需要消耗更長時間。
分析與解決:除了當天外,任何一天的資料統計其實都是穩定不變的,因而我們可以考慮把每天統計出來的資料記錄起來,下回再查詢時便直接從記錄裡去讀取,這裡我們用到快取表。即建一張表,用於記錄這些資料(每天查詢獲得的統計資料)。
一般情況下有快取表已經可以解決以上的需求了,起碼二次查詢的速度已經提高很多了。
不過快取表是存在硬盤裡的,想要更快讀取資料自然是從記憶體讀取。便要用到快取
業務邏輯:
if(查詢日期>=今天){
去源資料庫讀取資料//當天的資料是動態變化的,不該記錄到快取表或存入快取
}else{
優先從快取讀取資料//最快
if(快取有對應日期的key)//根據業務需求決定key是日期或其他引數
{讀取快取資料}
else{
若快取無資料,嘗試查詢快取表
if(快取表有資料){
讀取快取表資料
}else{
快取表無資料,則去源資料庫讀資料;
將新資料存入快取;
將新資料插入快取表; }
}
返回讀取的資料
}
PS:本文是做快取的一種方式,快取的最終目的是提高訪問效率,節省伺服器資源,我們可以利用各種方式將固定的資料存在合理的位置,在需要的時候從相應位置讀取,並在邏輯上進行處理,保證資料不發生異常。所以快取的方式是有很多種的。