Memcached 作用與使用 基本介紹
1,對(duì)于緩存的存取方式,簡言之,就是以鍵值對(duì)的形式將數(shù)據(jù)保存在內(nèi)存中。在日常業(yè)務(wù)中涉及的操作無非就是增刪改查。加入緩存機(jī)制后,查詢的時(shí)候,對(duì)數(shù)據(jù)進(jìn)行緩存,增刪改的時(shí)候,清除緩存即可。這其中對(duì)于緩存的閉合就非常重要,如果緩存沒有及時(shí)得到更新,那用戶就會(huì)獲取到過期數(shù)據(jù),就會(huì)產(chǎn)生問題。
2,對(duì)于單一業(yè)務(wù)的緩存管理(數(shù)據(jù)庫中只操作單表),只需生成一個(gè)key,查詢時(shí),使用key,置入緩存;增刪改時(shí),使用key,清除緩存。將key與表綁定,操作相對(duì)簡單。
3,但是在現(xiàn)實(shí)業(yè)務(wù)中,更多的是對(duì)關(guān)聯(lián)表的增刪改查(數(shù)據(jù)庫多表操作),業(yè)務(wù)之間互相關(guān)聯(lián),數(shù)據(jù)庫中的某張表不止一個(gè)業(yè)務(wù)再進(jìn)行操作,將緩存攔截在service層,對(duì)業(yè)務(wù)進(jìn)行緩存,對(duì)多表進(jìn)行緩存。
4,業(yè)務(wù)層緩存實(shí)現(xiàn)策略:
4.1,在緩存中建立一個(gè)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ù)版本號(hào),從0開始遞增。
4.2,調(diào)用一個(gè)查詢業(yè)務(wù)時(shí),對(duì)數(shù)據(jù)進(jìn)行緩存,設(shè)置operation為1,告訴cache對(duì)象,這是一個(gè)緩存操作,例如調(diào)用 queryAB(args[])方法時(shí),cache對(duì)象切入,將prefix(即”A|B“)與uqversion(初始化為0),存入uqmap中進(jìn)行緩存。
4.3,將prefix,uqversion,方法明+參數(shù),進(jìn)行拼接,使用md5進(jìn)行加密后作為一個(gè)key,將方法的結(jié)果集作為value,進(jìn)行緩存。至此緩存成功。
4.4,當(dāng)?shù)诙€(gè)請(qǐng)求來調(diào)用queryAB時(shí),cache對(duì)象切入,首先,查詢uqmap對(duì)象,使用prefix找到對(duì)應(yīng)的uqversion,然后,通過拼接加密獲取key,最后取得結(jié)果集進(jìn)行返回。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26