- 網際網路應用正常流程、
緩存可使用在1~4的各個環節中,每個環節的緩存方案與使用各有特點。
1 緩存特征
資料分類
按使用頻率和方式:
-
靜态資料
一般不變,類似于字典表
-
準靜态資料
變化頻率很低,部門結構設定,全國行政區劃資料等
-
中間狀态資料
一些計算的可複用中間資料,變量副本,配置中心的本地副本
-
熱資料
使用頻率高
-
讀寫比較大
讀的頻率 >> 寫的頻率
這些資料适合于使用緩存的方式通路
- 廣義,為了加速資料處理,讓業務更快通路的臨時存放的備援資料
-
狹義,在分布式系統裡把緩存到記憶體的資料,也就是 Redis
緩存是一個資料模型對象,有它的一些特征
1.1 命中率
命中率=傳回正确結果數/請求緩存次數
命中率問題是緩存中的一個非常重要的問題,它是衡量緩存有效性的重要名額。命中率越高,表明緩存的使用率越高。
1.2 最大元素(或最大空間)
緩存中可以存放的最大元素的數量,一旦緩存中元素數量超過這個值(或者緩存資料所占空間超過其最大支援空間)
那麼将會觸發
緩存啟動清空政策
,根據不同的場景合理的設定最大元素值往往可以一定程度上提高緩存的命中率,進而更有效的使用緩存
1.3 清除政策
緩存的存儲空間有限制,當緩存空間被用滿時,如何保證在穩定服務的同時有效提升命中率?
這就由緩存清空政策來處理
常見的一般政策有:
- FIFO(first in first out)
最先進入緩存的資料在緩存空間不夠的情況下(超出最大元素限制)會被優先被清除掉,以騰出新的空間接受新的資料
政策算法主要比較緩存元素的建立時間。在資料實效性要求場景下可選擇該類政策,優先保障最新資料可用
- LFU(less frequently used)
無論是否過期,根據元素的被使用次數判斷,清除使用次數較少的元素釋放空間
政策算法主要比較元素的hitCount(命中次數)。在保證高頻資料有效性場景下,可選擇這類政策
- LRU(least recently used)
無論是否過期,根據元素最後一次被使用的時間戳,清除最遠使用時間戳的元素釋放空間
政策算法主要比較元素最近一次被get使用時間。在熱點資料場景下較适用,優先保證熱點資料的有效性
除此之外,還有一些簡單政策比如:
- 根據過期時間判斷,清理過期時間最長的元素
- 根據過期時間判斷,清理最近要過期的元素
- 随機清理
- 根據關鍵字(或元素内容)長短清理等
緩存使用不當導緻的問題
-
系統預熱導緻啟動慢
一個系統啟動需要預熱半個小時。 導緻系統不能做到快速應對故障當機等問題。
-
系統記憶體資源耗盡
隻加入資料,不能清理舊資料。 舊資料處理不及時,或者不能有效識别無用資料。