今天小編給大家分享的是常見(jiàn)的緩存策略的優(yōu)劣勢(shì)對(duì)比,很多人都不太了解,今天小編為了讓大家更加了解緩存策略的優(yōu)劣勢(shì),所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會(huì)有所收獲的哦。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供德清網(wǎng)站建設(shè)、德清做網(wǎng)站、德清網(wǎng)站設(shè)計(jì)、德清網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、德清企業(yè)網(wǎng)站模板建站服務(wù),十年德清做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。眾所周知,想要提高系統(tǒng)的性能,緩存是最直接也是最簡(jiǎn)單的方法之一。緩存一方面可以減少數(shù)據(jù)庫(kù)負(fù)載,另一方面還可以減少相應(yīng)時(shí)間并且節(jié)省成本。今天,小編將向大家介紹幾種比較常見(jiàn)的緩存策略,即Cache-Aside、Read-Though Cache、Write-Through Cache、Write-Around和Write-Back。下面讓我們一起對(duì)比分析一下常用緩存策略的優(yōu)劣以及使用場(chǎng)景吧!
緩存策略一:Cache-Aside
Cache-Aside可以說(shuō)時(shí)最常用的緩存策略。緩存位于一邊,應(yīng)用程序直接與緩存和數(shù)據(jù)庫(kù)對(duì)話。應(yīng)用程序首先檢查緩存;如果在緩存中找到,表示已經(jīng)命中緩存。數(shù)據(jù)被讀取并返回給應(yīng)用程序;如果在緩存中沒(méi)有找到,則未命中緩存。應(yīng)用程序必須做一些額外的工作,它需要查詢數(shù)據(jù)庫(kù)來(lái)讀取數(shù)據(jù),將數(shù)據(jù)返回給客戶端,然后還要將數(shù)據(jù)存儲(chǔ)在緩存中,這樣對(duì)相同數(shù)據(jù)的后續(xù)讀取可以命中緩存。該項(xiàng)策略適合讀多的應(yīng)用場(chǎng)景。使用Cache-aside的系統(tǒng)對(duì)緩存失效具有一定的彈性。如果緩存集群宕機(jī),系統(tǒng)仍然可以通過(guò)直接訪問(wèn)數(shù)據(jù)庫(kù)進(jìn)行操作。另外,緩存中的數(shù)據(jù)模型可以與數(shù)據(jù)庫(kù)中的數(shù)據(jù)模型不同。
緩存策略二:Read-Though Cache
Read-though策略下的緩存與數(shù)據(jù)庫(kù)保持一致。當(dāng)緩存丟失時(shí),它從數(shù)據(jù)庫(kù)加載相應(yīng)的數(shù)據(jù),填充緩存并將其返回給應(yīng)用程序。cache-aside和read-through策略都是延遲加載數(shù)據(jù)的,也就是說(shuō),只在第一次讀取數(shù)據(jù)時(shí)才加載數(shù)據(jù)。對(duì)比read-through和cache-aside,它們的大區(qū)別在于,在cache-aside中應(yīng)用程序負(fù)責(zé)從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)并填充緩存。在read-through中,此邏輯通常由庫(kù)或獨(dú)立緩存提供程序支持,而且read-through cache中的數(shù)據(jù)模型不能與數(shù)據(jù)庫(kù)中的數(shù)據(jù)模型不同。總的來(lái)講,read-through緩存最適合于讀量較大的工作負(fù)載。劣勢(shì)是,當(dāng)?shù)谝淮握?qǐng)求數(shù)據(jù)時(shí),它總是導(dǎo)致緩存丟失,并導(dǎo)致額外的數(shù)據(jù)加載到緩存的代價(jià)。
緩存策略三:Write-Through Cache
在這種緩存策略中,首先將數(shù)據(jù)寫入緩存,然后寫入數(shù)據(jù)庫(kù)。緩存與數(shù)據(jù)庫(kù)保持一致,寫操作總是通過(guò)緩存到達(dá)主數(shù)據(jù)庫(kù)。就其本身而言,write-through緩存似乎沒(méi)有多大作用,實(shí)際上,它們引入了額外的寫延遲,因?yàn)閿?shù)據(jù)先寫到緩存,然后寫到主數(shù)據(jù)庫(kù)。但是,當(dāng)與read-through結(jié)合使用時(shí),我們獲得了read-through的所有好處,還獲得了數(shù)據(jù)一致性保證,使我們不必使用緩存失效技術(shù)。DynamoDB Accelerator (DAX)是write-through / read-through cache的一個(gè)很好的例子。它與DynamoDB和應(yīng)用程序內(nèi)聯(lián)。對(duì)DynamoDB的讀寫可以通過(guò)DAX完成。
緩存策略四:Write-Around
這種緩存策略下,數(shù)據(jù)直接寫入數(shù)據(jù)庫(kù),只有讀取的數(shù)據(jù)才能進(jìn)入緩存。Write-around可以與read-through結(jié)合使用,并在數(shù)據(jù)只寫一次、讀取次數(shù)較少或從不讀的情況下提供良好的性能。例如,實(shí)時(shí)日志或聊天室消息。同樣,這個(gè)模式也可以與cache-aside組合使用。
緩存策略五:Write-Back
這種緩存策略下,應(yīng)用程序?qū)?shù)據(jù)寫入緩存,緩存會(huì)立即確認(rèn),并在延遲一段時(shí)間后將數(shù)據(jù)寫入數(shù)據(jù)庫(kù)。有時(shí)這種策略也被稱為write-behind。Write-back緩存提高了寫性能,對(duì)于寫工作量大的工作負(fù)載非常有用。當(dāng)與read-through相結(jié)合的時(shí)候,它對(duì)于混合工作負(fù)載非常有效,最近更新和訪問(wèn)的數(shù)據(jù)總是在緩存中可用。它對(duì)數(shù)據(jù)庫(kù)故障具有很大程度上的彈性,可以容忍一些數(shù)據(jù)庫(kù)的宕機(jī)。如果支持批處理或合并,則可以減少對(duì)數(shù)據(jù)庫(kù)的總體寫操作,這將減少負(fù)載并降低成本。一些開(kāi)發(fā)人員使用Redis時(shí),同時(shí)采用了cache-aside和write-back兩種策略,以便更好地吸收峰值負(fù)載期間的峰值。這種緩存策略的優(yōu)劣十分明顯,它主要劣勢(shì)是,如果緩存失效,數(shù)據(jù)可能會(huì)永久丟失。大多數(shù)關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)引擎的內(nèi)部都默認(rèn)啟用了回寫緩存。查詢首先寫入內(nèi)存,最后刷新到磁盤。
以上就是常見(jiàn)的緩存策略的優(yōu)劣勢(shì)對(duì)比的簡(jiǎn)略介紹,當(dāng)然詳細(xì)使用上面的不同還得要大家自己使用過(guò)才領(lǐng)會(huì)。如果想了解更多,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道哦!
本文名稱:常見(jiàn)的緩存策略的優(yōu)劣勢(shì)對(duì)比-創(chuàng)新互聯(lián)
URL標(biāo)題:http://aaarwkj.com/article28/deoscp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、企業(yè)網(wǎng)站制作、網(wǎng)站導(dǎo)航、小程序開(kāi)發(fā)、全網(wǎng)營(yíng)銷推廣、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容