Memcached 作用與使用 基本介紹
1,對于緩存的存取方式,簡言之,就是以鍵值對的形式將數(shù)據(jù)保存在內(nèi)存中。在日常業(yè)務(wù)中涉及的操作無非就是增刪改查。加入緩存機(jī)制后,查詢的時候,對數(shù)據(jù)進(jìn)行緩存,增刪改的時候,清除緩存即可。這其中對于緩存的閉合就非常重要,如果緩存沒有及時得到更新,那用戶就會獲取到過期數(shù)據(jù),就會產(chǎn)生問題。
2,對于單一業(yè)務(wù)的緩存管理(數(shù)據(jù)庫中只操作單表),只需生成一個key,查詢時,使用key,置入緩存;增刪改時,使用key,清除緩存。將key與表綁定,操作相對簡單。
3,但是在現(xiàn)實(shí)業(yè)務(wù)中,更多的是對關(guān)聯(lián)表的增刪改查(數(shù)據(jù)庫多表操作),業(yè)務(wù)之間互相關(guān)聯(lián),數(shù)據(jù)庫中的某張表不止一個業(yè)務(wù)再進(jìn)行操作,將緩存攔截在service層,對業(yè)務(wù)進(jìn)行緩存,對多表進(jìn)行緩存。
4,業(yè)務(wù)層緩存實(shí)現(xiàn)策略:
4.1,在緩存中建立一個key為"union_query",value為“hashmap<prefix,uqversion>(‘簡稱uqmap’)“的緩存,prefix保存的是當(dāng)前業(yè)務(wù)操作涉及到的數(shù)據(jù)庫表名的組合(數(shù)據(jù)庫表名的唯一性),使用‘|’分隔(例 prefix=“A|B”,此次業(yè)務(wù)將操作A表與B表),uqversion是業(yè)務(wù)版本號,從0開始遞增。
4.2,調(diào)用一個查詢業(yè)務(wù)時,對數(shù)據(jù)進(jìn)行緩存,設(shè)置operation為1,告訴cache對象,這是一個緩存操作,例如調(diào)用 queryAB(args[])方法時,cache對象切入,將prefix(即”A|B“)與uqversion(初始化為0),存入uqmap中進(jìn)行緩存。
4.3,將prefix,uqversion,方法明+參數(shù),進(jìn)行拼接,使用md5進(jìn)行加密后作為一個key,將方法的結(jié)果集作為value,進(jìn)行緩存。至此緩存成功。
4.4,當(dāng)?shù)诙€請求來調(diào)用queryAB時,cache對象切入,首先,查詢uqmap對象,使用prefix找到對應(yīng)的uqversion,然后,通過拼接加密獲取key,最后取得結(jié)果集進(jìn)行返回。