快取系列文章 4 快取的粒度控制

2021-09-02 13:22:11 字數 1188 閱讀 4594

一、什麼是快取粒度

下面這個圖是很多專案關於快取使用最常用的乙個抽象,那麼我們假設storage層為mysql, cache層為redis。

其實這個問題就是快取粒度問題,我們在快取設計應該佮預估和考慮呢?下面我們將從通用性、空間、**維護三個角度進行說明。

二、全部資料和部分資料比較

1. 兩者的特點是顯而易見的:

資料型別

通用性空間占用(記憶體空間 + 網路位元速率)

**維護

全部資料高大

簡單 部分資料低小

較為複雜

2. 通用性:

如果單從通用性上看,全部資料是最優秀的,但是有個問題就是是否有必要快取全部資料,認為以後會有這樣的需求,但是從經驗看除了非常重要的資訊,那些不重要的字段基本不會在需求裡出現,也就是說這種通用性 通常都是想象出來的。太多人覺得通用性是最重要的。vid拿一些基本資訊,會想**明星。。要不要用通用性高的,於是加了全域性的,通用性很重要,但是要想清楚。

3. 空間占用:

很顯然,快取全部資料,會占用大量的記憶體,有人會說,不就費一點記憶體嗎,能有多少錢?而且已經有人習慣了把快取當做下水道來使用,什麼都框框的往裡面放,但是我這裡要說記憶體並不是免費的,可以說是很珍貴的資源。instagram21->4g的例子就說明了這個道理,好的程式設計師可以幫助公司節約大量的資源。

而且單個cache(id)也帶來兩個問題:序列化的開銷和網路流量的開銷(qps,百倍),都是無容忽視的。

4. **維護:

**維護性,全部資料的優勢更加明顯,而部分資料一旦要加新字段就會修改**,而且還需要對原來的資料進行重新整理。

三、總結:

快取粒度問題是乙個容易被忽視的問題,如果使用不當,可能會造成很多無用空間的浪費,可能會造成網路頻寬的浪費,可能會造成**通用性較差等情況,必須學會綜合資料通用性、空間占用比、**維護性 三點評估取捨

因素權衡使用。

快取系列文章 2 是否真的需要快取?

一 快取的成本和收益是什麼 既然要討論是否真的需要快取這個問題,就要知道快取帶來的成本與收益 好處 壞處 是什麼?收益成本 快取 後端儲存 資源 1.加速讀寫 2.降低後端負載 1.資料不一致性 2.維護成本 3.架構複雜度 上面的 應該清楚的表達了使用快取後的收益和成本分別是什麼。下面將進行詳細的...

HTTP的快取控制

1.快取的分類 1 快取分為服務端側 server side,比如 nginx apache 和客戶端側 client side,比如 web browser 2 服務端快取又分為 伺服器快取 和 反向 伺服器快取 也叫閘道器快取,比如 nginx反向 squid等 其實廣泛使用的 cdn 也是一種...

Nginx的快取控制

加速使用者訪問,提公升單個使用者 瀏覽器訪問者 體驗,快取在本地 快取在nginx端,提公升所有訪問到nginx這一端的使用者體驗 提公升訪問上游 upstream 伺服器的速度 使用者訪問仍然產生請求流量 expires server 配置上游伺服器 集群 upstream tomcats pro...