1, 給DAO的方法上加SpringAOP的Around通知,決定數(shù)據(jù)從數(shù)據(jù)庫獲得還是從緩存獲得。
2,自定義兩個Annotation,@Cache和@Flush,分別加在DAO的查詢和修改的方法上。
3,Around通知函數(shù)內用反射獲取上述的@cache和@Flush,代表是記錄緩存,還是刪除緩存。
4,記錄緩存時用“類名+方法名+參數(shù)的hashcode”作為Key,刪除緩存時,刪除所有的同類名開頭的key對應的緩存。
5,Memcached不支持遍歷key,所以采用數(shù)據(jù)庫表記錄key,假設:tbl_memcached(key,exp_date)。
6,定義一個時鐘,定期刪除tbl_memcached的過期記錄(刪除數(shù)據(jù)庫記錄前,刪除緩存)。
7,記錄緩存時,同時存入一條記錄到tbl_memcached表。
8,刪除緩存是依據(jù)tbl_memcache表的key來進行,并且要刪除tbl_memcached表的相關記錄。