在web系統中,常見的加速系統訪問的手段有對頁面靜態化,緩存頁面,緩存數據,負載均衡等,緩存層起到了很是重要的做用,目前經常使用到的緩存組件有Redis,memcache等,對於緩存要求較高的項目,Redis的集羣管理框架codis也是很不錯的選擇;git
在代碼開發過程當中,爲了減小編碼,下降緩存和業務代碼的耦合度,咱們須要把緩存從繁雜的業務代碼中抽離出來,成爲緩存層,僅僅這樣仍是不夠的,在這裏,我不單單把緩存層抽離出來,還進一步加強了可插拔性,從而更加方便對緩存進行管理,從這裏思路出發,我在這裏作了一個簡單的緩存層,而且已經在實戰項目中運行了很長一段時間,目前僅僅支持redis,可是代碼層次具備可擴展性,在後面要加入codis。github
項目代碼:https://github.com/yamorn/cache-support web
總體邏輯以下圖:redis
在調用service或者dao中須要緩存的接口時,使用aop攔截,查詢緩存,若是緩存中存在,則直接返回,若是緩存中不存在,則查詢數據庫,將查詢的結果返回調用層,與此同時也要把結果存入緩存;數據庫
聲明緩存的命名空間,便於對個緩存進行管理和清除。在須要緩存的方法上加上註解,即刻達到緩存的目的,很大程度上下降了緩存層和業務代碼的耦合度。緩存