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

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. 緩存算法:緩存容量超過預設,如何踢掉“無用”的數據。
例如:LRU(Least Recently Used) FIFO(First Input First Output)Least Frequently Used(LFU) 等等
5. System-of-Record(真實數據源): 例如關系型數據庫、其他持久性系統等等。
也有英文書叫做authority data(權威數據)
6. serialization-and-deserialization(序列化與反序列化):可以參考:序列化與反序列化(美團工程師寫的,非常棒的文章)
后面也有單獨文章去分析。

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

服務器也是一樣的道理,至少互聯網是這樣:

7. Write-through 和 write-behind


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

2. Standalone(單機):
(1) 緩存和應用是獨立部署的。
(2) 緩存可以是單臺。(例如memcache/redis單機等等)
(3) 強一致性
(4) 無高可用、無分布式。
(5) 跨進程、跨網絡

3. Distributed(分布式):例如Redis-Cluster, memcache集群等等
(1) 緩存和應用是獨立部署的。
(2) 多個實例。(例如memcache/redis等等)
(3) 強一致性或者最終一致性
(4) 支持Scale Out、高可用。
(5) 跨進程、跨網絡

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