一、基本概念
1. Cache(緩存): 從cpu的一級(jí)和二級(jí)緩存、Internet的DNS、到瀏覽器緩存都可以看做是一種緩存。
維基百科: 寫道
a store of things that will be required in the future, and can be retrieved rapidly.
(存貯數(shù)據(jù)(使用頻繁的數(shù)據(jù))的臨時(shí)地方,因?yàn)槿≡紨?shù)據(jù)的代價(jià)太大了,所以我可以取得快一些)

2. Cache hit(緩存命中)(下圖左)
When a data element is requested from cache and the elements exists for the given key.
3. Cahe miss(緩存未命中): 與Cache hit相反(下圖右)

4. 緩存算法:緩存容量超過預(yù)設(shè),如何踢掉“無(wú)用”的數(shù)據(jù)。
例如:LRU(Least Recently Used) FIFO(First Input First Output)Least Frequently Used(LFU) 等等
5. System-of-Record(真實(shí)數(shù)據(jù)源): 例如關(guān)系型數(shù)據(jù)庫(kù)、其他持久性系統(tǒng)等等。
也有英文書叫做authority data(權(quán)威數(shù)據(jù))
6. serialization-and-deserialization(序列化與反序列化):可以參考:序列化與反序列化(美團(tuán)工程師寫的,非常棒的文章)
后面也有單獨(dú)文章去分析。

6. Scale Up (垂直擴(kuò)容) 和 Scale out (水平擴(kuò)容)
驢拉車,通常不是把一頭驢養(yǎng)壯(有極限),而通常是一群驢去拉(當(dāng)然每個(gè)個(gè)體也不能太差)。

服務(wù)器也是一樣的道理,至少互聯(lián)網(wǎng)是這樣:

7. Write-through 和 write-behind


8.阿姆而達(dá)定律:用于計(jì)算緩存加速比
二、緩存的種類或者類型
1. LocalCache(獨(dú)立式): 例如Ehcache、BigMemory Go
(1) 緩存和應(yīng)用在一個(gè)JVM中。
(2) 緩存間是不通信的,獨(dú)立的。
(3) 弱一致性。

2. Standalone(單機(jī)):
(1) 緩存和應(yīng)用是獨(dú)立部署的。
(2) 緩存可以是單臺(tái)。(例如memcache/redis單機(jī)等等)
(3) 強(qiáng)一致性
(4) 無(wú)高可用、無(wú)分布式。
(5) 跨進(jìn)程、跨網(wǎng)絡(luò)

3. Distributed(分布式):例如Redis-Cluster, memcache集群等等
(1) 緩存和應(yīng)用是獨(dú)立部署的。
(2) 多個(gè)實(shí)例。(例如memcache/redis等等)
(3) 強(qiáng)一致性或者最終一致性
(4) 支持Scale Out、高可用。
(5) 跨進(jìn)程、跨網(wǎng)絡(luò)

4. Replicated(復(fù)制式): 緩存數(shù)據(jù)時(shí)同時(shí)存放在多個(gè)應(yīng)用節(jié)點(diǎn)的,數(shù)據(jù)復(fù)制和失效的事件以同步或者異步的形式在各個(gè)集群節(jié)點(diǎn)間傳播。(也是弱一致性)
這種用的不太多。
三、數(shù)據(jù)層訪問速度:(作為開發(fā)人員要記住這些量級(jí))
