国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

如何保持MySQL和Redis中的數據一致

發(fā)布時(shí)間:2021-09-14 18:07 來(lái)源:億速云 閱讀:0 作者:柒染 欄目: Mysql 歡迎投稿:712375056

這篇文章給大家介紹如何保持和中的數據一致,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

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

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

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

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

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

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

  2. 異步策略

  3. 定時(shí)策略

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

異步策略適用于,數據量大,但是數據并不重要,因為可能會(huì )導致臟數據或者數據丟失

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

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

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

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

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

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

  1. MySQL持久化數據,Redis只讀數據

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

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

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

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

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

延時(shí)雙刪策略

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

  1. 先刪緩存

  2. 再寫(xiě)數據庫

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

  4. 再刪緩存

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

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

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

最新AV偷拍AV偷窥AV网站| 最近最新中文字幕视频| 日本高清WWW午色夜在线视频| 人妻无码久久一区二区三区免费| 少妇人妻AV无码专区| 我想把我的乌龟蹭你的扇贝视频|