緩存
命中率: 命中數(shù)/(命中數(shù)+ 沒有命中數(shù))
最大元素(空間):緩存控件
清空策略:
FIFO(先進(jìn)先出) 最近進(jìn)入緩存隊列的數(shù)據(jù)灶壶,在內(nèi)存不夠暮蹂、超出最大元素限制的時候優(yōu)先被清除緩存,以騰出空間緩存緩存新的數(shù)據(jù)。
LFU(最少使用策略) 清除使用次數(shù)比較少的數(shù)據(jù)勇吊。
LRU(最近最小使用策略) 無輪是否過期闯估,根據(jù)數(shù)據(jù)最后一次使用的時間戳。有小保證熱點數(shù)據(jù)供炼。
過期時間 :過期最長時間的緩存和過期時間最短時間的緩存。
隨機
場景和業(yè)務(wù)需求:讀多寫少的場景,實時性越低就越容易緩存窘疮,緩存時間長就越容易命中
緩存的設(shè)計(粒度和策略) :
緩存的容量和基礎(chǔ)設(shè)施 :
緩存節(jié)點失效發(fā)生故障(等):
(熔點冗余)
提高數(shù)據(jù)命中率
緩存分類和應(yīng)用場景
本地緩存:編程實現(xiàn)(成員變量袋哼、局部變量、靜態(tài)變量)
Guava Cache
分布式緩存: Memcache 闸衫、 Redis
Guava Cache
設(shè)計靈感來源于:ConcurrentHashMap
類似于Map涛贯,是一個存儲鍵值對的集合,另加了緩存過期和動態(tài)加載等算法的邏輯蔚出;按照根據(jù)面向?qū)ο蟮?思想做方法和對象的關(guān)聯(lián)性封裝弟翘。
實現(xiàn)的功能:將節(jié)點加載進(jìn)緩存結(jié)構(gòu)中,當(dāng)緩存的數(shù)據(jù)超過設(shè)置的最大值時骄酗,使用LRU算法來移除數(shù)據(jù)稀余,
他可以根據(jù)節(jié)點上次被訪問或者寫入時間來計算他的過期機制。
key 放在XXX中趋翻,value 放在XX中睛琳;可以統(tǒng)計緩存的命中率,異常率踏烙,未命中率等統(tǒng)計數(shù)據(jù)师骗。
通過segment來實現(xiàn)細(xì)粒度鎖,
Memcache(原理懵逼)
開源分布式緩存產(chǎn)品
單個ITEM 2G ,KEY 250個字節(jié)
Redis
遠(yuǎn)程內(nèi)存數(shù)據(jù)庫讨惩,非關(guān)系型數(shù)據(jù)庫辟癌。
特點:
1)支持?jǐn)?shù)據(jù)持久化,可以把內(nèi)存的數(shù)據(jù)保存到磁盤上荐捻,可以再次加載使用黍少。
2)不僅支持簡單的key value數(shù)據(jù)還支持特殊的類型: list 、set 靴患、hash仍侥、sorted set 豐富的數(shù)據(jù)類型。
3)支持?jǐn)?shù)據(jù)備份
4)性能極高鸳君,讀寫強勁
5) 所有操作都是 原子性农渊,同時支持多個操作合并后的原子性執(zhí)行
6) key 過期、pubish、通知砸紊、subscribe 等功能
使用場景:
1传于、去最新數(shù)據(jù)的操作
2、排行榜類似的應(yīng)用
3醉顽、需要精準(zhǔn)設(shè)計過期時間的應(yīng)用
4沼溜、用于計數(shù)器的應(yīng)用
5、可以應(yīng)用于做唯一性檢查的應(yīng)用
6游添、獲取某一個時間段內(nèi)所有數(shù)據(jù)的排序值
7系草、實時系統(tǒng)和來垃圾系統(tǒng)、實時的消息和隊列系統(tǒng)唆涝,以及最基礎(chǔ)的緩存功能
高并發(fā)場景下緩存的常見問題
1找都、緩存一致性問題
2、緩存并發(fā)問題
3廊酣、緩存穿透問題
1) 緩存空對象
2) 單獨過濾處理
4能耻、緩存的雪崩現(xiàn)象