新聞中心
?緩存可以說是最簡(jiǎn)單也最復(fù)雜的一個(gè)概念,用好它你可以讓你的應(yīng)用飛起,不會(huì)用它,即使再高的配置,你的應(yīng)用也難以發(fā)揮最佳效果。

為定州等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及定州網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、定州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
什么是緩存
緩存就是硬件或者軟件直接存取數(shù)據(jù),而不是從原始源(數(shù)據(jù)庫(kù),計(jì)算等)存取數(shù)據(jù),它會(huì)加快數(shù)據(jù)的讀取。
內(nèi)存緩存是我們經(jīng)常使用的緩存技術(shù),通過將常用的數(shù)據(jù)保存到內(nèi)存中,我們就可以避免從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),這會(huì)大大提升應(yīng)用的加載速度,提升用戶體驗(yàn)。
什么時(shí)候使用緩存
- 當(dāng)我們需要請(qǐng)求外部資源的時(shí)候,比如第三方 api,我們希望緩存請(qǐng)求的結(jié)果
- 當(dāng)請(qǐng)求的數(shù)據(jù)發(fā)生變化的時(shí)候,我們可以緩存返回結(jié)果
- 當(dāng)應(yīng)用需要頻繁地請(qǐng)求同一個(gè)資源的時(shí)候
- 當(dāng)應(yīng)用需要運(yùn)行一些復(fù)雜的計(jì)算機(jī)的時(shí)候
- 當(dāng)應(yīng)用查詢耗時(shí)的時(shí)候
緩存的好處
- 提升應(yīng)用的性能
- 減少數(shù)據(jù)庫(kù)的開銷
- 增加并發(fā)
緩存的類型
- 應(yīng)用緩存
- 數(shù)據(jù)庫(kù)緩存
- DNS 緩存
- 客戶端緩存
- CDN 緩存
- API 網(wǎng)關(guān)緩存
分布式緩存
分布式緩存由一個(gè)服務(wù)端實(shí)現(xiàn)管理和控制,有多個(gè)客戶端節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù),可以進(jìn)一步提高數(shù)據(jù)的讀取速率。那么我們要讀取某個(gè)數(shù)據(jù)的時(shí)候,應(yīng)該選擇哪個(gè)節(jié)點(diǎn)呢?如果挨個(gè)節(jié)點(diǎn)找,那效率就太低了。因此需要根據(jù)一致性哈希算法確定數(shù)據(jù)的存儲(chǔ)和讀取節(jié)點(diǎn)。以數(shù)據(jù) D,節(jié)點(diǎn)總個(gè)數(shù) N 為基礎(chǔ),通過一致性哈希算法計(jì)算出數(shù)據(jù) D 對(duì)應(yīng)的哈希值(相當(dāng)于門牌號(hào)),根據(jù)這個(gè)哈希值就可以找到對(duì)應(yīng)的節(jié)點(diǎn)了。一致哈希算法的好處在于節(jié)點(diǎn)個(gè)數(shù)發(fā)生變化(減少或增加)時(shí)無需重新計(jì)算哈希值,保證數(shù)據(jù)儲(chǔ)存或讀取時(shí)可以正確、快速地找到對(duì)應(yīng)的節(jié)點(diǎn)。
分布式緩存能夠高性能地讀取數(shù)據(jù)、能夠動(dòng)態(tài)地?cái)U(kuò)展緩存節(jié)點(diǎn)、能夠自動(dòng)發(fā)現(xiàn)和切換故障節(jié)點(diǎn)、能夠自動(dòng)均衡數(shù)據(jù)分區(qū),而且能夠?yàn)槭褂谜咛峁﹫D形化的管理界面,部署和維護(hù)都十分方便。
緩存策略
(1) Cache-Aside
先讀取緩存,如果緩存失效,那么讀取數(shù)據(jù)庫(kù)獲取數(shù)據(jù),然后將數(shù)據(jù)設(shè)置到緩存里面。
(2) Read Through
應(yīng)用只從緩存取數(shù)據(jù),如果沒有取到,那么緩存會(huì)從數(shù)據(jù)庫(kù)獲取數(shù)據(jù),然后設(shè)置緩存,最后應(yīng)用從緩存繼續(xù)讀取數(shù)據(jù)。
(3) Write Through
應(yīng)用保存數(shù)據(jù)的時(shí)候,都是先保存到緩存里面,緩存會(huì)將數(shù)據(jù)再保存到數(shù)據(jù)庫(kù),應(yīng)用不直接和數(shù)據(jù)庫(kù)打交道,只是保存數(shù)據(jù)到緩存。
(44) Write Back or Write Behind
應(yīng)用程序?qū)?shù)據(jù)寫入緩存,然后會(huì)發(fā)送確認(rèn)返回給應(yīng)用,然后緩存寫入數(shù)據(jù)庫(kù)。
(5) Write Around
應(yīng)用數(shù)據(jù)直接寫入數(shù)據(jù)庫(kù),從而讀取數(shù)據(jù)從緩存中獲取。
總結(jié)
曾經(jīng)有個(gè)偉人說過,所有我們目前解決不了的計(jì)算機(jī)問題,都可以通過添加一個(gè)中間層來解決,而緩存就是一個(gè)中間層,有了這個(gè)中間層,我們的應(yīng)用性能得到了極大提升,但緩存不是萬能的,它也有它的弊端,只有合理的使用它,我們才能發(fā)揮它的最大價(jià)值。
文章名稱:關(guān)于軟件設(shè)計(jì)中緩存的那些事兒
當(dāng)前URL:http://m.fisionsoft.com.cn/article/ccegsjj.html


咨詢
建站咨詢
