緩存層如何設(shè)計
馬克-to-win:我們前面講過了n-tier架構(gòu)。在我們的程序當中,還可以設(shè)計一個緩存層。在去訪問數(shù)據(jù)庫之前,先看看緩存層中有沒有數(shù)據(jù),如果沒有的話,從數(shù)據(jù)庫取完數(shù)據(jù)回來,一定要放在緩存層當中一份,下次就不用去數(shù)據(jù)庫了。馬克-to-win:如果對數(shù)據(jù)庫當中,某個數(shù)據(jù)更新了,同時一定要記住也更新一下緩存當中的數(shù)據(jù)。這樣的話,既保證了緩存的數(shù)據(jù)是最新的,也保證了將來查詢時不用去查數(shù)據(jù)庫,減輕了對數(shù)據(jù)庫的壓力。這里有些問題,問題1,如果除了你的項目,還有其他的地方可以更改數(shù)據(jù)庫,怎么辦?可以做一個守護線程,發(fā)現(xiàn)某個表的版本變了,就重新把表的數(shù)據(jù)加載回你的緩存。問題2,對于條件查詢,如何處理緩存?比如30元到50元的衣服數(shù)據(jù)的第二頁。大家通常的做法是,把整個衣服表都加載到緩存中,無非就是一個 List,之后整個做個遍歷,把符合條件的選出來。為什么要整個加載?因為別人還有可能要查20到40塊錢的第五頁的數(shù)據(jù)。問題3,項目a處需要看表的 123列,b處需要看表的456列,緩存時就直接把123456列作為一個表緩存起來,供兩處使用。馬克-to-win:順便說一句,緩存也可以緩存圖片。數(shù)據(jù)庫和圖片服務(wù)器,可以認為是大的倉庫,什么都能找到,而緩存可以看做是前端的商店,客戶經(jīng)常要買的東西就存一部分在商店,這樣可以提高效率。如果商店沒有相應(yīng)的商品,也不用著急,因為我們后面的倉庫肯定有。 馬克- to-win:馬克 java社區(qū):防盜版實名手機尾號: 73203。