緩存的基本知識(shí)
在整個(gè)計(jì)算機(jī)體系構(gòu)造中(無(wú)論是硬件層面還是軟件層面),緩存都是無(wú)處不在的。
在計(jì)算機(jī)硬件構(gòu)造中,由于兩種介質(zhì)的速度不匹配,高速介質(zhì)在和低速介質(zhì)交互時(shí)速度趨向低速方,這就導(dǎo)致了高速介質(zhì)的資源閑置。而通過(guò)引入第三種介質(zhì)(速度和成本介于兩者中間),將低速方讀寫(xiě)的部分內(nèi)容數(shù)據(jù)保存在該介質(zhì)中,高速方大多數(shù)情況下則無(wú)需和低速方直接交互,這樣就能整體提升了交互的性能。這就是計(jì)算機(jī)體系中緩存的由來(lái)。比較典型的就是CPU緩存(CPU寄存器=>L1 cahce =>L2 cache =>內(nèi)存=>硬盤(pán)),如圖:
在計(jì)算機(jī)系統(tǒng)和應(yīng)用軟件層面,緩存更是無(wú)處不在。我們?cè)谑褂脼g覽器上網(wǎng)時(shí),很多靜態(tài)資源會(huì)被緩存到本地。我們?cè)谑謾C(jī)上采用微信聊天時(shí),很多好友的頭像等數(shù)據(jù)會(huì)被緩存到手機(jī)中。在操作系統(tǒng)層面,I/O操作也會(huì)被內(nèi)核緩存(一般將數(shù)據(jù)緩存在文件系統(tǒng)的緩存頁(yè)中),當(dāng)然,這個(gè)可能相比前兩個(gè)場(chǎng)景更加抽象,但緩存的目的都是一致的,為了提升讀寫(xiě)性能。
緩存在狹義上解決介質(zhì)讀寫(xiě)速度不匹配問(wèn)題,廣義上包括任何利用中間媒介提高速度的方法,包括:空間換時(shí)間,動(dòng)態(tài)操作變?yōu)殪o態(tài)操作。
緩存(CACHE)和緩沖(BUFFER)
緩存:可以共享,多種數(shù)據(jù),大小不固定,可以重復(fù)使用,已知數(shù)據(jù),用于提高IO效率。
緩沖:不可以共享,單一數(shù)據(jù),大小固定,讀取后失效,命中100%,未知數(shù)據(jù),用于減少I(mǎi)O次數(shù)。
緩存的屬性
命中率:從緩存中返回正確數(shù)據(jù)的次數(shù)/總請(qǐng)求次數(shù)。