更新時間:2020-05-15 13:59:02 來源:動力節點 瀏覽2749次
想要提高系統的性能,緩存是最直接也是最簡單的方法之一。緩存一方面可以減少數據庫負載,另一方面還可以減少相應時間并且節省成本。今天,小編將向大家介紹幾種比較常見的緩存策略,即Cache-Aside、Read-ThoughCache、Write-ThroughCache、Write-Around和Write-Back。下面讓我們一起對比分析一下常用緩存策略的優劣以及使用場景吧!
緩存策略一:Cache-Aside
Cache-Aside可以說時最常用的緩存策略。緩存位于一邊,應用程序直接與緩存和數據庫對話。應用程序首先檢查緩存;如果在緩存中找到,表示已經命中緩存。數據被讀取并返回給應用程序;如果在緩存中沒有找到,則未命中緩存。應用程序必須做一些額外的工作,它需要查詢數據庫來讀取數據,將數據返回給客戶端,然后還要將數據存儲在緩存中,這樣對相同數據的后續讀取可以命中緩存。該項策略適合讀多的應用場景。使用Cache-aside的系統對緩存失效具有一定的彈性。如果緩存集群宕機,系統仍然可以通過直接訪問數據庫進行操作。另外,緩存中的數據模型可以與數據庫中的數據模型不同。
緩存策略二:Read-ThoughCache
Read-though策略下的緩存與數據庫保持一致。當緩存丟失時,它從數據庫加載相應的數據,填充緩存并將其返回給應用程序。cache-aside和read-through策略都是延遲加載數據的,也就是說,只在第一次讀取數據時才加載數據。對比read-through和cache-aside,它們的最大區別在于,在cache-aside中應用程序負責從數據庫中獲取數據并填充緩存。在read-through中,此邏輯通常由庫或獨立緩存提供程序支持,而且read-throughcache中的數據模型不能與數據庫中的數據模型不同??偟膩碇v,read-through緩存最適合于讀量較大的工作負載。劣勢是,當第一次請求數據時,它總是導致緩存丟失,并導致額外的數據加載到緩存的代價。
緩存策略三:Write-ThroughCache
在這種緩存策略中,首先將數據寫入緩存,然后寫入數據庫。緩存與數據庫保持一致,寫操作總是通過緩存到達主數據庫。就其本身而言,write-through緩存似乎沒有多大作用,實際上,它們引入了額外的寫延遲,因為數據先寫到緩存,然后寫到主數據庫。但是,當與read-through結合使用時,我們獲得了read-through的所有好處,還獲得了數據一致性保證,使我們不必使用緩存失效技術。DynamoDBAccelerator(DAX)是write-through/read-throughcache的一個很好的例子。它與DynamoDB和應用程序內聯。對DynamoDB的讀寫可以通過DAX完成。
緩存策略四:Write-Around
這種緩存策略下,數據直接寫入數據庫,只有讀取的數據才能進入緩存。Write-around可以與read-through結合使用,并在數據只寫一次、讀取次數較少或從不讀的情況下提供良好的性能。例如,實時日志或聊天室消息。同樣,這個模式也可以與cache-aside組合使用。
緩存策略五:Write-Back
這種緩存策略下,應用程序將數據寫入緩存,緩存會立即確認,并在延遲一段時間后將數據寫入數據庫。有時這種策略也被稱為write-behind。Write-back緩存提高了寫性能,對于寫工作量大的工作負載非常有用。當與read-through相結合的時候,它對于混合工作負載非常有效,最近更新和訪問的數據總是在緩存中可用。它對數據庫故障具有很大程度上的彈性,可以容忍一些數據庫的宕機。如果支持批處理或合并,則可以減少對數據庫的總體寫操作,這將減少負載并降低成本。一些開發人員使用Redis時,同時采用了cache-aside和write-back兩種策略,以便更好地吸收峰值負載期間的峰值。這種緩存策略的優劣十分明顯,它主要劣勢是,如果緩存失效,數據可能會永久丟失。大多數關系數據庫存儲引擎的內部都默認啟用了回寫緩存。查詢首先寫入內存,最后刷新到磁盤。
Java數據庫免費視頻教程
老杜最新MySQL教程:http://m.dabaquan.cn/javavideo/111.html
老杜最新JDBC教程:http://m.dabaquan.cn/javavideo/112.html
以上就是動力節點java培訓機構的小編針對“Java數據庫視頻下載,常用緩存策略的優劣對比”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習