1. 程式人生 > >簡單快取及快取表應用入門

簡單快取及快取表應用入門

業務需求:源資料庫比較龐大,一個簡單查詢都要幾秒到十幾秒。現在需要統計某日的部分資料,比如當天有多少使用者登入之類,需要按天統計,還需要有個功能要合計。如果一天天去查詢,查一次耗費的時間都很長,不用快取的話,下次再查需要消耗更長時間。

分析與解決:除了當天外,任何一天的資料統計其實都是穩定不變的,因而我們可以考慮把每天統計出來的資料記錄起來,下回再查詢時便直接從記錄裡去讀取,這裡我們用到快取表。即建一張表,用於記錄這些資料(每天查詢獲得的統計資料)。

一般情況下有快取表已經可以解決以上的需求了,起碼二次查詢的速度已經提高很多了。

不過快取表是存在硬盤裡的,想要更快讀取資料自然是從記憶體讀取。便要用到快取

。快取其實可以是自己寫的一個類,可以用Dictionary型別來寫,該類有add,remove,count,clear等方法。我們可以把資料存在這個類中,就跟把資料存入model的一個道理。因此只要程式還在執行,快取的資料你不呼叫方法去清空,它就不會丟,但程式一重啟,則快取就清空了。

業務邏輯:

if(查詢日期>=今天){

去源資料庫讀取資料//當天的資料是動態變化的,不該記錄到快取表或存入快取

}else{

優先從快取讀取資料//最快

if(快取有對應日期的key)//根據業務需求決定key是日期或其他引數

{讀取快取資料}

else{

若快取無資料,嘗試查詢快取表

if(快取表有資料){

讀取快取表資料

}else{

快取表無資料,則去源資料庫讀資料;

將新資料存入快取;

將新資料插入快取表;  }


返回讀取的資料

}


PS:本文是做快取的一種方式,快取的最終目的是提高訪問效率,節省伺服器資源,我們可以利用各種方式將固定的資料存在合理的位置,在需要的時候從相應位置讀取,並在邏輯上進行處理,保證資料不發生異常。所以快取的方式是有很多種的。