一站式學習Redis 從入門到高可用分佈式實踐(慕課)第十章 緩存設計與優化

課程目錄前端

緩存的使用與設計算法

  • 緩存的受益與成本

         受益: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.布隆過濾器攔截

  • 無底洞問題優化

                        加機器性能沒有提高,反而降低

 

  • 緩存雪崩優化
  • 熱點key重建優化

 

互斥鎖 :減小了重建緩存次數,增長了等待

永不過時:可能數據不一致

相關文章
相關標籤/搜索