AWS ElastiCache - 延遲載入
有多種方法可以填充快取並保持快取的維護。這些不同的方法被稱為快取策略。維護排行榜資料的遊戲網站需要的策略與新聞網站上趨勢新聞顯示的策略不同。在本章中,我們將研究一種名為延遲載入的策略。
當應用程式請求資料時,請求會在 ElastiCache 的快取中搜索資料。有兩種可能性。資料存在於快取中或不存在。相應地,我們將情況分為以下兩類。
快取命中
應用程式從快取請求資料。
快取查詢發現快取中存在更新後的資料。
結果返回給請求應用程式。
快取未命中
應用程式從快取請求資料。
快取查詢發現快取中不存在更新後的資料。
快取查詢向請求應用程式返回空值。
現在,應用程式直接從資料庫請求資料並接收它。
然後,請求應用程式使用它直接從資料庫接收的新資料更新快取。
下次請求相同資料時,它將屬於上述快取命中場景。
以上場景通常可以透過下圖描述。
延遲載入的優點
僅快取請求的資料 - 由於大多數資料從未被請求過,因此延遲載入避免用未被請求的資料填充快取。
節點故障不是致命的 - 當節點發生故障並被新的空節點替換時,應用程式繼續執行,儘管延遲有所增加。隨著對新節點的請求,每次快取未命中都會導致資料庫查詢並將資料副本新增到快取中,以便從快取中檢索後續請求。
延遲載入的缺點
快取未命中懲罰 - 每次快取未命中都會導致 3 次往返。一次,從快取中初始請求資料,兩次,從資料庫查詢資料,最後將資料寫入快取。這可能會導致資料到達應用程式時出現明顯的延遲。
陳舊資料 - 如果僅在快取未命中時將資料寫入快取,則快取中的資料可能會變得陳舊,因為當資料庫中的資料發生更改時,快取不會更新。這個問題可以透過直寫和新增 TTL 策略來解決,我們將在接下來的章節中看到。
廣告