我們編程中遇到各式各樣的緩存。但你了解緩存是用來干嘛的嗎朗鸠?
一、緩存是什么础倍?
維基百科的定義:
- 緩存:存儲(chǔ)在計(jì)算機(jī)上的一個(gè)原始數(shù)據(jù)復(fù)制集烛占,以便于訪問。
簡(jiǎn)單地說沟启,緩存就是一種快速響應(yīng)的技術(shù)忆家。比如,CPU的高速緩存德迹。學(xué)過操作系統(tǒng)的同學(xué)芽卿,一定對(duì)下圖特別熟悉,CPU多級(jí)緩存胳搞。CPU CACHE存在的目的就是為了解決CPU的頻率與內(nèi)存訪問速度的不一致卸例。
二称杨、繽紛煩亂的緩存
既然cpu緩存的目的是消除cpu頻率與內(nèi)存訪問的速度不一致,那網(wǎng)絡(luò)系統(tǒng)中的緩存的目的是什么筷转?
看上圖姑原,我們將上圖的緩存分為三種。
1.客戶端緩存
我們知道每次網(wǎng)絡(luò)請(qǐng)求都是毫秒級(jí)呜舒,而將訪問的結(jié)果緩存在本地可以將速度提升數(shù)個(gè)數(shù)量級(jí)锭汛,并且也減少了服務(wù)側(cè)的壓力。例如我們的DNS就會(huì)緩存在瀏覽器中袭蝗,一些js等靜態(tài)文件瀏覽器也可能會(huì)緩存唤殴。所以客戶端緩存的主要目的是減少對(duì)那些讀多寫少的數(shù)據(jù)的網(wǎng)絡(luò)訪問。
2.服務(wù)端本地緩存
上圖CPU的多級(jí)緩存到腥,一般的教科書上還會(huì)在Main memroy下在擴(kuò)展一層--持久化層朵逝。而持久化層的訪問通常是毫秒級(jí)的,所以通常左电,我們會(huì)通過本地緩存來緩存一些讀多寫少的熱點(diǎn)數(shù)據(jù)廉侧。比如nginx的緩存,數(shù)據(jù)庫(kù)的查詢緩存篓足。
3.分布式緩存
我們一般將數(shù)據(jù)持久化到DB中(大數(shù)據(jù)段誊,日志,大文件一般由其他持久化中間件支撐)栈拖,而很多對(duì)DB的訪問請(qǐng)求是非常耗時(shí)的连舍,這種情況在高并發(fā)的網(wǎng)絡(luò)環(huán)境尤為明顯。而分布式緩存的一個(gè)主要應(yīng)用場(chǎng)景就是緩存讀多寫少的DB數(shù)據(jù)涩哟,或者一些耗時(shí)非常久的復(fù)雜運(yùn)算數(shù)據(jù)索赏。
三、總結(jié)
緩存的原理就是將數(shù)據(jù)副本存入速度更快的存儲(chǔ)設(shè)備贴彼,將數(shù)據(jù)放到與使用者更近的位置潜腻。
最后祭上我的xmind。