資料內(nèi)容:
1、作為數(shù)據(jù)庫(kù)的前端緩存應(yīng)用
完整緩存(易),靜態(tài)緩存,例如:商品分類(京東),以及商品信息,可事先放在內(nèi)存里,然后再對(duì)
外提供數(shù)據(jù)訪問,這種先放到內(nèi)存,我們稱之為預(yù)熱,(先把數(shù)據(jù)存緩存中),用戶訪問時(shí)可以只讀取
memcached)緩存,不讀取數(shù)據(jù)庫(kù)了。
執(zhí)點(diǎn)緩存(難),需要前端web程序配合,只緩存熱點(diǎn)的數(shù)據(jù),即緩存經(jīng)常被訪問的數(shù)據(jù)。先預(yù)熱數(shù)據(jù)
庫(kù)里的基礎(chǔ)數(shù)據(jù),然后在動(dòng)態(tài)更新,選讀取緩存,如果緩存里沒有對(duì)應(yīng)的數(shù)據(jù),程序再去讀取數(shù)據(jù)庫(kù),
然后程序把讀取的新數(shù)據(jù)放入緩存存儲(chǔ)。
特殊說明 :
如果碰到電商秒殺等高并發(fā)的業(yè)務(wù),一定要事先預(yù)熱,或者其它思想實(shí)現(xiàn),例如:稱殺只是獲取資格,
而不是瞬間秒殺到手商品。那么什么是獲取資格?就是在數(shù)據(jù)庫(kù)中,把0標(biāo)成1.就有資格啦。再慢慢的
去領(lǐng)取商品訂單。因?yàn)槊霘⑦^程太長(zhǎng)會(huì)占用服務(wù)器資源。
如果數(shù)據(jù)更新,同時(shí)觸發(fā)緩存更新,防止給用戶過期數(shù)據(jù)。
對(duì)于持久化緩存存儲(chǔ)系統(tǒng),例如:redis,可以替代一部分?jǐn)?shù)據(jù)庫(kù)的存儲(chǔ),一些簡(jiǎn)單的數(shù)據(jù)業(yè)務(wù),投
票,統(tǒng)計(jì),好友關(guān)注,商品分類等。nosql= not only sql
2、作業(yè)集群的session會(huì)話共享存儲(chǔ)
3、Memcached服務(wù)在不同企業(yè)業(yè)務(wù)應(yīng)用場(chǎng)景中的工作流程
當(dāng)web程序需要訪問后端數(shù)據(jù)庫(kù)獲取數(shù)據(jù)時(shí)會(huì)優(yōu)先訪問Memcached內(nèi)存緩存,如果緩存中有數(shù)據(jù)就直
接獲取返回前端服務(wù)及用戶,如果沒有數(shù)據(jù)(沒有命中),在由程序請(qǐng)求后端的數(shù)據(jù)庫(kù)服務(wù)器,獲取到
對(duì)應(yīng)的數(shù)據(jù)后,除了返回給前端服務(wù)及用戶數(shù)據(jù)外,還會(huì)把數(shù)據(jù)放到Memcached內(nèi)存中進(jìn)行緩存,等
待下次請(qǐng)求被訪問,Memcache內(nèi)存始終是數(shù)據(jù)庫(kù)的擋箭牌,從而大大的減輕數(shù)據(jù)庫(kù)的訪問壓力,提高
整個(gè)網(wǎng)站架構(gòu)的響應(yīng)速度,提升了用戶體驗(yàn)。
當(dāng)程序更新,修改或刪除數(shù)據(jù)庫(kù)中已有的數(shù)據(jù)時(shí),會(huì)同時(shí)發(fā)送請(qǐng)求通知Memcached已經(jīng)緩存的同一個(gè)
ID內(nèi)容的舊數(shù)據(jù)失效,從而保證Memcache中數(shù)據(jù)和數(shù)據(jù)庫(kù)中的數(shù)據(jù)一致。
如果在高并發(fā)場(chǎng)合,除了通知Memcached過程的緩存失效外,還會(huì)通過相關(guān)機(jī)制,使得在用戶訪問新
數(shù)據(jù)前,通過程序預(yù)先把更新過的數(shù)據(jù)推送到memcache中緩存起來(lái),這樣可以減少數(shù)據(jù)庫(kù)的訪問壓
力,提升Memcached中緩存命中率。
數(shù)據(jù)庫(kù)插件可以再寫入更新數(shù)據(jù)庫(kù)后,自動(dòng)拋給MC緩存起來(lái),自身不Cache.