我們編程中遇到各式各樣的緩存。但你了解緩存是用來干嘛的嗎?
一、緩存是什么?
維基百科的定義:
- 緩存:存儲在計算機(jī)上的一個原始數(shù)據(jù)復(fù)制集,以便于訪問。
簡單地說,緩存就是一種快速響應(yīng)的技術(shù)。比如,CPU的高速緩存。學(xué)過操作系統(tǒng)的同學(xué),一定對下圖特別熟悉,CPU多級緩存。CPU CACHE存在的目的就是為了解決CPU的頻率與內(nèi)存訪問速度的不一致。

二、繽紛煩亂的緩存
既然cpu緩存的目的是消除cpu頻率與內(nèi)存訪問的速度不一致,那網(wǎng)絡(luò)系統(tǒng)中的緩存的目的是什么?

看上圖,我們將上圖的緩存分為三種。
1.客戶端緩存
我們知道每次網(wǎng)絡(luò)請求都是毫秒級,而將訪問的結(jié)果緩存在本地可以將速度提升數(shù)個數(shù)量級,并且也減少了服務(wù)側(cè)的壓力。例如我們的DNS就會緩存在瀏覽器中,一些js等靜態(tài)文件瀏覽器也可能會緩存。所以客戶端緩存的主要目的是減少對那些讀多寫少的數(shù)據(jù)的網(wǎng)絡(luò)訪問。
2.服務(wù)端本地緩存
上圖CPU的多級緩存,一般的教科書上還會在Main memroy下在擴(kuò)展一層--持久化層。而持久化層的訪問通常是毫秒級的,所以通常,我們會通過本地緩存來緩存一些讀多寫少的熱點(diǎn)數(shù)據(jù)。比如nginx的緩存,數(shù)據(jù)庫的查詢緩存。
3.分布式緩存
我們一般將數(shù)據(jù)持久化到DB中(大數(shù)據(jù),日志,大文件一般由其他持久化中間件支撐),而很多對DB的訪問請求是非常耗時的,這種情況在高并發(fā)的網(wǎng)絡(luò)環(huán)境尤為明顯。而分布式緩存的一個主要應(yīng)用場景就是緩存讀多寫少的DB數(shù)據(jù),或者一些耗時非常久的復(fù)雜運(yùn)算數(shù)據(jù)。
三、總結(jié)
緩存的原理就是將數(shù)據(jù)副本存入速度更快的存儲設(shè)備,將數(shù)據(jù)放到與使用者更近的位置。
最后祭上我的xmind。
