對于緩存大家都不會陌生,但如何正確和合理的使用緩存還是需要一定的思考,本文將基于Java技術棧對緩存做一個相對詳細的介紹,內(nèi)容分為基本概念、本地緩存、遠程緩存和分布式緩存集群幾個部分,重點在于理解緩存的相關概念,愿合理的使用Cache如下圖的妹子一樣美好。
電腦培訓,計算機培訓,平面設計培訓,網(wǎng)頁設計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓

基本概念

緩存是計算機系統(tǒng)中必不可少的一種解決性能問題的方法,常見的應用包括CPU緩存、操作系統(tǒng)緩存、本地緩存、分布式緩存、HTTP緩存、數(shù)據(jù)庫緩存等。其核心就是用空間換時間,通過分配一塊高速存儲區(qū)域(一般來說是內(nèi)存)來提高數(shù)據(jù)的讀寫效率,實現(xiàn)的難點就在于清空策略的實現(xiàn),比較合理的思路就是定時回收與即時判斷數(shù)據(jù)是否過期相結合。

緩存相關概念

  1. 命中率:命中率指請求次數(shù)與正確返回結果次數(shù)的比例,其影響因素包括數(shù)據(jù)實時性,如果股票類實時性要求很高的數(shù)據(jù),緩存的命中率會很低;緩存粒度問題, 如果KEY值包含的條件太多,會出現(xiàn)緩存命中率特別低的情況。通常來說,提高緩存命中率的方法包括增大緩存空間的大小的;對熱點數(shù)據(jù)進行實時更新;調整緩存KEY的算法,保證緩存KEY的細粒度,如key-value;根據(jù)業(yè)務需要合理調整緩存的過期策略。

  2. 最大元素:緩存中可以存放的元素的最大數(shù)量。

  3. 清空策略包括FIFO,最先進入緩存的數(shù)據(jù)在空間不夠時會被優(yōu)先清理;LFU一直以來最少被使用的元素會被清理,可以給緩存元素設置一個計數(shù)器實現(xiàn);LRU最近最少使用的緩存元素會被清理,可以通過一個時間戳來講最近未使用數(shù)據(jù)清除。

  4. 預熱策略包括全量預熱,一開始就加載全部數(shù)據(jù),適用于不怎么變化的數(shù)據(jù)(地區(qū)數(shù)據(jù));增量預熱,查詢不到時從數(shù)據(jù)源取出放入緩存。

Tip:
緩存在高并發(fā)場景下的常見問題

緩存相關問題

  1. 緩存穿透:一般的緩存系統(tǒng),都是按照key去緩存查詢