欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何保持MySQL和Redis中的數(shù)據(jù)一致-創(chuàng)新互聯(lián)

這篇文章給大家介紹如何保持MySQL和Redis中的數(shù)據(jù)一致,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

為羅平等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及羅平網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、羅平網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

在高并發(fā)的業(yè)務(wù)場(chǎng)景下,MySQL和Redis的數(shù)據(jù)一致性就顯得很重要了,多次訪問(wèn)MySQL就會(huì)導(dǎo)致奔潰或者延緩速度,而緩存Redis過(guò)多也會(huì)出問(wèn)題,那就是丟數(shù)據(jù),存著存著,數(shù)據(jù)就丟了

Redis 在互聯(lián)網(wǎng)行業(yè)中使用最為廣泛。在很多時(shí)候也被稱(chēng)為“內(nèi)存數(shù)據(jù)庫(kù)”,它集合了緩存和數(shù)據(jù)庫(kù)的優(yōu)勢(shì),但并非開(kāi)啟持久化和主備同步機(jī)制就可以高枕無(wú)憂(yōu)。

寫(xiě)入數(shù)據(jù)庫(kù)成功,即讓緩存失效,下一次讀取時(shí)再緩存。這是緩存的實(shí)時(shí)策略。

從架構(gòu)設(shè)計(jì)的角度思考:緩存就是緩存,緩存數(shù)據(jù)會(huì)隨時(shí)丟失,緩存存在的目的是攔截到數(shù)據(jù)庫(kù)的請(qǐng)求,相比數(shù)據(jù)的可靠性、一致性,還是吞吐量、穩(wěn)定性?xún)?yōu)先。

在考慮數(shù)據(jù)一致性的問(wèn)題上由三種刷新策略

  1. 實(shí)時(shí)策略

  2. 異步策略

  3. 定時(shí)策略

實(shí)時(shí)策略是最常用的策略,能夠讓用戶(hù)有最好的體驗(yàn),但是一旦數(shù)據(jù)量過(guò)大就會(huì)出現(xiàn),數(shù)據(jù)苦往往會(huì)受不了

異步策略適用于,數(shù)據(jù)量大,但是數(shù)據(jù)并不重要,因?yàn)榭赡軙?huì)導(dǎo)致臟數(shù)據(jù)或者數(shù)據(jù)丟失

定時(shí)策略適用于,數(shù)據(jù)量大,數(shù)據(jù)也很重要的情況下,這也是最穩(wěn)定的方案

讀取的過(guò)程,應(yīng)用程序先從 cache 取數(shù)據(jù),沒(méi)有得到,則從數(shù)據(jù)庫(kù)中取數(shù)據(jù),成功后,放到緩存中。如果命中,應(yīng)用程序從 cache 中取數(shù)據(jù),取到后返回。

寫(xiě)入的過(guò)程,把數(shù)據(jù)存到數(shù)據(jù)庫(kù)中,成功后,再刪除緩存,刪除后下次讀取的時(shí)候,會(huì)被寫(xiě)入緩存。

從用戶(hù)體驗(yàn)的角度,應(yīng)該數(shù)據(jù)庫(kù)有了寫(xiě)入,就馬上廢棄緩存,觸發(fā)一次數(shù)據(jù)庫(kù)的讀取,從而更新緩存。

然而,這和高并發(fā)就矛盾了——如果所有的都實(shí)時(shí)從數(shù)據(jù)庫(kù)里面讀取,高并發(fā)場(chǎng)景下,數(shù)據(jù)庫(kù)往往受不了。

在讀取寫(xiě)入數(shù)據(jù)時(shí),適用定時(shí)策略一般不會(huì)出問(wèn)題

  1. MySQL持久化數(shù)據(jù),Redis只讀數(shù)據(jù)

  2. MySQL和Redis處理不同的數(shù)據(jù)類(lèi)型
    MySQL處理實(shí)時(shí)性數(shù)據(jù),Redis處理對(duì)實(shí)時(shí)性要求并不是很高的數(shù)據(jù)。在并發(fā)不高的情況下,讀取操作優(yōu)先讀取redis,不存在的話再去訪問(wèn)MySQL,并把讀取到的數(shù)據(jù)寫(xiě)回Redis中;寫(xiě)入操作直接寫(xiě)MySQL,然后后再寫(xiě)入Redis。在并發(fā)高的情況下,讀取操作和上面一樣,寫(xiě)入操作則使用異步寫(xiě)入,先寫(xiě)入Redis后直接返回,然后定時(shí)定期的寫(xiě)入MySQL

而一旦涉及到更新數(shù)據(jù),就容易出現(xiàn)緩存和數(shù)據(jù)庫(kù)之間的數(shù)據(jù)一致性的問(wèn)題,不管是先寫(xiě)入數(shù)據(jù)庫(kù)再刪除緩存,還是先刪除緩存再寫(xiě)入數(shù)據(jù)庫(kù),都有可能出現(xiàn)數(shù)據(jù)不一致的情況,例如:

  • 先寫(xiě)入數(shù)據(jù)庫(kù),再刪除緩存前,線程宕機(jī)了,沒(méi)有刪除掉緩存,就會(huì)出現(xiàn)數(shù)據(jù)不一致的情況

  • 先刪除Redis,還沒(méi)來(lái)得及寫(xiě)入數(shù)據(jù)庫(kù),另外一個(gè)線程就來(lái)讀取,發(fā)現(xiàn)緩存為空,這個(gè)時(shí)候就會(huì)跑去數(shù)據(jù)庫(kù)讀取數(shù)據(jù)寫(xiě)入緩存,這個(gè)時(shí)候緩存中的數(shù)據(jù)就是臟數(shù)據(jù)

因?yàn)閷?xiě)入和讀取是并發(fā)的,沒(méi)有辦法保證順序,就會(huì)出現(xiàn)緩存和數(shù)據(jù)庫(kù)的數(shù)據(jù)是不一致的問(wèn)題,這時(shí)候就可以使用

延時(shí)雙刪策略

在寫(xiě)庫(kù)前后都進(jìn)行Redis.del(key)操作,并且設(shè)定合理地超時(shí)時(shí)間

  1. 先刪緩存

  2. 再寫(xiě)數(shù)據(jù)庫(kù)

  3. 休眠一段時(shí)間

  4. 再刪緩存

設(shè)置緩存的過(guò)期時(shí)間

理論上來(lái)講,設(shè)置緩存過(guò)期時(shí)間,是保證最終一致性的解決方案。所有的寫(xiě)入操作以數(shù)據(jù)庫(kù)為準(zhǔn),只要到達(dá)緩存過(guò)期時(shí)間,則后面的讀請(qǐng)求自然會(huì)從數(shù)據(jù)庫(kù)中讀取新值然后回填緩存

關(guān)于如何保持MySQL和Redis中的數(shù)據(jù)一致就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)頁(yè)標(biāo)題:如何保持MySQL和Redis中的數(shù)據(jù)一致-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://chinadenli.net/article22/cogocc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)建站公司移動(dòng)網(wǎng)站建設(shè)軟件開(kāi)發(fā)網(wǎng)站設(shè)計(jì)公司云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(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)

成都做網(wǎng)站