緩存(cache) 這個概念揣炕,最早是出現(xiàn)在 計算機硬件設(shè)計 中帘皿。
比如 cpu cache,是用于減少處理器訪問內(nèi)存所需平均時間的部件畸陡。該部件的容量小于內(nèi)存鹰溜,但速度比內(nèi)存高很多虽填,接近處理器的頻率。
如上圖示曹动,在 計算機硬件設(shè)計中
當處理器(cpu)發(fā)送內(nèi)存訪問請求時斋日,先查看緩存中是否有請求數(shù)據(jù),
如果存在(命中)墓陈,則不訪問內(nèi)存直接返回該數(shù)據(jù)恶守;
如果不存在(未命中),則先把內(nèi)存中的數(shù)據(jù)存入緩存贡必,再講其返回處理器
由于緩存速度高于內(nèi)存速度兔港,因此能整體提高計算機的性能。
由于該設(shè)計思路的優(yōu)秀赊级,在 計算機軟件設(shè)計中 中押框,就借鑒了該思路來提高系統(tǒng)性能,如下圖示:
如上圖示理逊,整體思路跟硬件設(shè)計中是一樣的橡伞。
內(nèi)存的讀寫速度遠大于磁盤的讀寫速度,將常用的數(shù)據(jù)緩存在內(nèi)存中晋被,提高訪問速度兑徘,能提高服務(wù)的整體性能
在計算機軟件系統(tǒng)的,內(nèi)存的類型大概有以下幾種類型:
1. 分布式緩存:當出現(xiàn)大流量羡洛、高并發(fā)時挂脑,數(shù)據(jù)庫(db) 性能常常成為瓶頸,
這時常會引進分布式緩存來緩解 db 的壓力欲侮。常見的有redis崭闲,memcached
2. 進程內(nèi)緩存(本地緩存):由于分布式緩存會有網(wǎng)絡(luò)開銷,在對性能極高要求的場景下威蕉,
分布式緩存可能無法滿足性能要求刁俭,于是就有了 本地緩存。
本地緩存的有點是少了網(wǎng)絡(luò)開銷韧涨,節(jié)省了內(nèi)網(wǎng)寬帶牍戚,有更低的響應(yīng)延遲,能滿足更高業(yè)務(wù)性能的需求虑粥。
缺點是多個應(yīng)用之間無法共享緩存如孝,且難以保持進程內(nèi)緩存的一致性
3. 語言級的緩存:有的動態(tài)語言會有語言級的緩存,如php
4. cdn緩存娩贷,http緩存第晰,web瀏覽器緩存