轉載請註明出處:http://carlosfu.iteye.com/blog/2269678
一、基本概念
Cache(緩存): 從cpu的一級和二級緩存、Internet的DNS、到瀏覽器緩存都可以看做是一種緩存。
維基百科: 寫道
a store of things that will be required in the future, and can be retrieved rapidly.
(存貯數據(使用頻繁的數據)的臨時地方,因爲取原始數據的代價太大了,所以我可以取得快一些)- Cache hit(緩存命中)(下圖左)
- Cahe miss(緩存未命中): 與Cache hit相反(下圖右)
緩存算法:緩存容量超過預設,如何踢掉“無用”的數據。
例如:LRU(Least Recently Used) FIFO(First Input First Output)Least Frequently Used(LFU) 等等
System-of-Record(真實數據源):
例如關係型數據庫、其他持久性系統等等。
也有英文書叫做authority data(權威數據)serialization-and-deserialization(序列化與反序列化):可以參考:序列化與反序列化(美團工程師寫的,非常棒的文章)
後面也有單獨文章去分析。
Scale Up (垂直擴容) 和 Scale out (水平擴容)
驢拉車,通常不是把一頭驢養壯(有極限),而通常是一羣驢去拉(當然每個個體也不能太差)。
服務器也是一樣的道理,至少互聯網是這樣:
Write-through 和 write-behind
9.阿姆而達定律:用於計算緩存加速比
二、緩存的種類或者類型
LocalCache(獨立式): 例如Ehcache、BigMemory Go
(1)、緩存和應用在一個JVM中。
(2)、緩存間是不通信的,獨立的。
(3)、弱一致性。
Standalone(單機):
(1)、緩存和應用是獨立部署的。
(2)、緩存可以是單臺。(例如memcache/redis單機等等)
(3)、 強一致性
(4)、無高可用、無分佈式。
(5)、跨進程、跨網絡
Distributed(分佈式):例如Redis-Cluster, memcache集羣等等
(1)、緩存和應用是獨立部署的。
(2)、緩存可以是單臺。(例如memcache/redis單機等等)
(3)、 強一致性
(4)、無高可用、無分佈式。
(5)、跨進程、跨網絡
Replicated(複製式): 緩存數據時同時存放在多個應用節點的,數據複製和失效的事件以同步或者異步的形式在各個集羣節點間傳播。(也是弱一致性)
這種用的不太多。