自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于軟件設(shè)計(jì)中緩存的那些事兒

開發(fā)
緩存就是硬件或者軟件直接存取數(shù)據(jù),而不是從原始源(數(shù)據(jù)庫(kù),計(jì)算等)存取數(shù)據(jù),它會(huì)加快數(shù)據(jù)的讀取。

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

什么是緩存

緩存就是硬件或者軟件直接存取數(shù)據(jù),而不是從原始源(數(shù)據(jù)庫(kù),計(jì)算等)存取數(shù)據(jù),它會(huì)加快數(shù)據(jù)的讀取。

內(nèi)存緩存是我們經(jīng)常使用的緩存技術(shù),通過(guò)將常用的數(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ǔ),通過(guò)一致性哈希算法計(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í)無(wú)需重新計(jì)算哈希值,保證數(shù)據(jù)儲(chǔ)存或讀取時(shí)可以正確、快速地找到對(duì)應(yīng)的節(jié)點(diǎn)。

關(guān)于軟件設(shè)計(jì)中緩存的那些事兒

分布式緩存能夠高性能地讀取數(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è)置到緩存里面。

關(guān)于軟件設(shè)計(jì)中緩存的那些事兒

(2) Read Through

應(yīng)用只從緩存取數(shù)據(jù),如果沒有取到,那么緩存會(huì)從數(shù)據(jù)庫(kù)獲取數(shù)據(jù),然后設(shè)置緩存,最后應(yīng)用從緩存繼續(xù)讀取數(shù)據(jù)。

關(guān)于軟件設(shè)計(jì)中緩存的那些事兒

(3) Write Through

應(yīng)用保存數(shù)據(jù)的時(shí)候,都是先保存到緩存里面,緩存會(huì)將數(shù)據(jù)再保存到數(shù)據(jù)庫(kù),應(yīng)用不直接和數(shù)據(jù)庫(kù)打交道,只是保存數(shù)據(jù)到緩存。

關(guān)于軟件設(shè)計(jì)中緩存的那些事兒

(44) Write Back or Write Behind

應(yīng)用程序?qū)?shù)據(jù)寫入緩存,然后會(huì)發(fā)送確認(rèn)返回給應(yīng)用,然后緩存寫入數(shù)據(jù)庫(kù)。

關(guān)于軟件設(shè)計(jì)中緩存的那些事兒

(5) Write Around

應(yīng)用數(shù)據(jù)直接寫入數(shù)據(jù)庫(kù),從而讀取數(shù)據(jù)從緩存中獲取。

關(guān)于軟件設(shè)計(jì)中緩存的那些事兒

總結(jié)

曾經(jīng)有個(gè)偉人說(shuō)過(guò),所有我們目前解決不了的計(jì)算機(jī)問(wèn)題,都可以通過(guò)添加一個(gè)中間層來(lái)解決,而緩存就是一個(gè)中間層,有了這個(gè)中間層,我們的應(yīng)用性能得到了極大提升,但緩存不是萬(wàn)能的,它也有它的弊端,只有合理的使用它,我們才能發(fā)揮它的最大價(jià)值。

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2017-04-12 12:31:14

緩存Web瀏覽器

2021-03-18 09:01:53

軟件開發(fā)軟件選型

2022-08-04 10:18:32

棧遷移?寄存器內(nèi)存

2022-06-02 08:42:15

Redis數(shù)據(jù)庫(kù)

2012-03-12 13:55:22

交互設(shè)計(jì)

2017-03-31 09:24:53

AR現(xiàn)實(shí)游戲

2022-05-25 08:27:30

tmux軟件

2020-09-22 14:29:24

智能

2012-11-28 10:54:37

禁止追蹤DNT

2013-06-13 11:29:14

分布式分布式緩存

2012-07-19 15:30:00

Linux

2014-04-30 12:18:07

軟件設(shè)計(jì)

2011-09-16 10:05:48

Android應(yīng)用Nightclub S夜店

2012-04-27 10:06:15

2018-03-01 15:34:20

數(shù)據(jù)科學(xué)面試招聘

2020-05-06 16:47:08

線程安全Python數(shù)據(jù)安全

2020-05-07 10:05:52

Python數(shù)據(jù)安全

2014-03-12 09:23:06

DevOps團(tuán)隊(duì)合作

2022-06-04 11:12:12

RPCREST協(xié)議

2011-01-21 14:33:30

軟件測(cè)試
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)