課程目錄前端
緩存的使用與設計算法
受益:1.加速讀寫:經過緩存加速讀寫速度:CPU L1/L2/L3Cache、Linux page Cache加速硬盤讀寫、瀏覽器緩存、Ehcache緩存數據庫結果 數據庫
2.下降後端負載:後端服務器經過前端緩存下降負載:業務端使用Redis下降後端MySQL負載等後端
成本:1.數據不一致 :緩存層和數據層有時間窗口不一致,和更新策略有關瀏覽器
2.代碼維護成本:多了一層緩存邏輯緩存
3.運維成本:例如Redis Cluster服務器
使用場景運維
1.下降後端負載:對高消耗的SQL:join結果集/分組統計結果緩存性能
2.加速請求響應:利用Redis/Memcache優化IO響應時間優化
3.大量寫合併爲批量寫:如計數器先Redis累加再批量寫DB
1.LRU/LFU/FIFO算法剔除:例如maxmemory-policy
2.超時剔除:例如expire
3.主動更新:開發控制生命週期
三個角度
1.通用性:全量屬性更好。
2.佔用空間:部分屬性更好。
3.代碼維護:表面上全量屬性更好。
緣由: 1.業務代碼自身問題
2.惡意共計、爬蟲等等
如何發現:1.業務的響應時間(可預計的)
2.業務自己問題
3.相關指標:總調用數、緩存層 命中數、存儲層命中數
解決方法:
1.緩存空對象
2.布隆過濾器攔截
加機器性能沒有提高,反而降低
互斥鎖 :減小了重建緩存次數,增長了等待
永不過時:可能數據不一致