緩存(cache) 這個概念,最早是出現在 計算機硬件設計 中。
比如 cpu cache,是用于減少處理器訪問內存所需平均時間的部件。該部件的容量小于內存,但速度比內存高很多,接近處理器的頻率。
如上圖示,在 計算機硬件設計中
當處理器(cpu)發送內存訪問請求時,先查看緩存中是否有請求數據,
如果存在(命中),則不訪問內存直接返回該數據;
如果不存在(未命中),則先把內存中的數據存入緩存,再講其返回處理器
由于緩存速度高于內存速度,因此能整體提高計算機的性能。
由于該設計思路的優秀,在 計算機軟件設計中 中,就借鑒了該思路來提高系統性能,如下圖示:
如上圖示,整體思路跟硬件設計中是一樣的。
內存的讀寫速度遠大于磁盤的讀寫速度,將常用的數據緩存在內存中,提高訪問速度,能提高服務的整體性能
在計算機軟件系統的,內存的類型大概有以下幾種類型:
1. 分布式緩存:當出現大流量、高并發時,數據庫(db) 性能常常成為瓶頸,
這時常會引進分布式緩存來緩解 db 的壓力。常見的有redis,memcached
2. 進程內緩存(本地緩存):由于分布式緩存會有網絡開銷,在對性能極高要求的場景下,
分布式緩存可能無法滿足性能要求,于是就有了 本地緩存。
本地緩存的有點是少了網絡開銷,節省了內網寬帶,有更低的響應延遲,能滿足更高業務性能的需求。
缺點是多個應用之間無法共享緩存,且難以保持進程內緩存的一致性
3. 語言級的緩存:有的動態語言會有語言級的緩存,如php
4. cdn緩存,http緩存,web瀏覽器緩存