国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Redis】Redis做為緩存,MySQL如何與Redis保持?jǐn)?shù)據(jù)一致

這篇具有很好參考價值的文章主要介紹了【Redis】Redis做為緩存,MySQL如何與Redis保持?jǐn)?shù)據(jù)一致。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Redis的作用

一般情況下Redis是用來實現(xiàn)應(yīng)用和數(shù)據(jù)庫之間的一個讀操作的緩存層,主要目的是減少數(shù)據(jù)庫的io,還可以提升數(shù)據(jù)庫io性能

方法一:

先更新MySQL數(shù)據(jù)庫,再刪除緩存,再從數(shù)據(jù)庫查詢到的最新的數(shù)據(jù)同步到redis。采用最終一致性性策略。

【Redis】Redis做為緩存,MySQL如何與Redis保持?jǐn)?shù)據(jù)一致,緩存,redis,mysql

缺點:相較于mq的方式,這種方式由于要查數(shù)據(jù)庫并將最新數(shù)據(jù)寫到redis,可能會造成接口響應(yīng)速度變慢。

方法二:

更新mysql數(shù)據(jù)庫,再采用mq異步的方式,將數(shù)據(jù)同步到redis中。

缺點:數(shù)據(jù)同步延時概率比較大,數(shù)據(jù)庫的更改信息投遞到mq中,消費者可能沒來得及消費消息同步數(shù)據(jù)到redis。

優(yōu)點:異步解耦

方法三:

基于訂閱mysql binlog,采用mq異步的形式將數(shù)據(jù)同步到redis(canal框架)。

將mysql以主從的方式部署,主庫負(fù)責(zé)寫,從庫負(fù)責(zé)讀,當(dāng)主庫的binlog日志文件發(fā)生改變時,將信息同步到從庫,從庫執(zhí)行對應(yīng)的sql,保證主從一致性。

canalServer端,偽裝成mysql的從節(jié)點,訂閱mysql主節(jié)點的binlog文件,當(dāng)主節(jié)點的binlog發(fā)生變化時,會將binlog日志文件發(fā)送給canalServer端,自己創(chuàng)建的處理程序連接到canalServer端,將數(shù)據(jù)同步到redis。

優(yōu)點:手動直接更改數(shù)據(jù)庫也會自動同步到redis。

方法四:

延時雙刪策略(不推薦)

  • 先刪緩存,在更新mysql并同步到redis,在高并發(fā)的情況下,第一個線程還沒來得及更新mysql時,其他線程讀取到的緩存可能為null值,將mysql舊的數(shù)據(jù)同步到redis中了。

解決辦法:延時刪除,在t1線程更新數(shù)據(jù)庫之后,sleep一段時間再去刪除緩存。

缺點:t1線程延時多少秒再去刪除緩存中的key?難以控制,得根據(jù)業(yè)務(wù)邏輯的執(zhí)行時間和寫緩存的時間來進(jìn)行估算。

補(bǔ)充:什么是雙寫一致性協(xié)議?

先更新數(shù)據(jù)庫,在更新緩存。

updateDB();
updateredis();

多個線程同步修改mysql和redis時,由于mysql行鎖機(jī)制,多個線程同時修改同一行數(shù)據(jù),只能有一個線程修改成功,兩個線程更新完數(shù)據(jù)庫后同時更新redis,由于不能確保兩個線程更新緩存的先后順序,可能會造成數(shù)據(jù)庫和緩存的不一致性。

解決辦法:使用事務(wù)保證更新數(shù)據(jù)庫和更新緩存整個兩個操作的原子性。文章來源地址http://www.zghlxwxcb.cn/news/detail-730509.html

到了這里,關(guān)于【Redis】Redis做為緩存,MySQL如何與Redis保持?jǐn)?shù)據(jù)一致的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Redis---數(shù)據(jù)庫和緩存如何保證一致性?

    用「讀 + 寫」請求的并發(fā)的場景來分析: 假如某個用戶數(shù)據(jù)在緩存中不存在,請求 A 讀取數(shù)據(jù)時從數(shù)據(jù)庫中查詢到年齡為 20,在未寫入緩存中時另一個請求 B 更新數(shù)據(jù)。它更新數(shù)據(jù)庫中的年齡為 21,并且清空緩存。這時請求 A 把從數(shù)據(jù)庫中讀到的年齡為 20 的數(shù)據(jù)寫入到緩存

    2024年01月24日
    瀏覽(27)
  • redis的緩存更新策略以及如何保證redis與數(shù)據(jù)庫的數(shù)據(jù)一致性

    redis的緩存更新策略有這么幾種: 1、由應(yīng)用直接和redis以及數(shù)據(jù)庫相連接: ?? ??? ?查詢數(shù)據(jù)時,應(yīng)用去redis中查詢,查不到的話再由應(yīng)用去數(shù)據(jù)庫中查詢,并將查詢結(jié)果放在redis; ?? ??? ?更新數(shù)據(jù)時,由應(yīng)用去觸發(fā)redis數(shù)據(jù)的刪除以及數(shù)據(jù)庫的update。 2、應(yīng)用只跟redi

    2024年02月13日
    瀏覽(25)
  • Redis與數(shù)據(jù)庫保持一致

    參考鏈接 先更新數(shù)據(jù)庫,再更新redis 存在漏洞,如果更新Redis失敗,仍然會導(dǎo)致不一致 先刪Redis,再更新數(shù)據(jù)庫并同步數(shù)據(jù)到Redis 存在漏洞,多線程情況下,線程1刪除redis后,還是有可能被其他線程讀取舊的數(shù)據(jù)庫數(shù)據(jù)加載到redis當(dāng)中 延遲雙刪, 在2的基礎(chǔ)上,更新成功后延遲

    2024年02月11日
    瀏覽(22)
  • Redis如何保障緩存與數(shù)據(jù)庫的數(shù)據(jù)一致性問題?

    Redis如何保障緩存與數(shù)據(jù)庫的數(shù)據(jù)一致性問題?

    目錄 一.最經(jīng)典的數(shù)據(jù)庫加緩存的雙寫雙刪模式 二. 高并發(fā)場景下的緩存+數(shù)據(jù)庫雙寫不一致問題分析與解決方案設(shè)計 三、上面高并發(fā)的場景下,該解決方案要注意的問題 1.1 Cache Aside Pattern概念以及讀寫邏輯 (1)讀的時候,先讀緩存,緩存沒有的話,那么就讀數(shù)據(jù)庫,然后取

    2023年04月21日
    瀏覽(29)
  • Redis 緩存與數(shù)據(jù)庫雙寫不一致如何解決

    Redis緩存與數(shù)據(jù)庫雙寫不一致是一個常見的挑戰(zhàn),但可以通過一些方法來解決或減輕這種不一致性。以下是一些可能的解決方案: 事務(wù)處理: 在進(jìn)行緩存和數(shù)據(jù)庫雙寫時,確保它們被包含在同一事務(wù)中。這可以通過使用支持事務(wù)的數(shù)據(jù)庫和Redis事務(wù)來實現(xiàn)。這樣,要么兩者同

    2024年01月21日
    瀏覽(24)
  • 如何保證Redis緩存和數(shù)據(jù)庫的一致性問題

    熟練掌握Redis緩存技術(shù)? 那么請問Redis緩存中有幾種讀寫策略,又是如何保證與數(shù)據(jù)庫的一致性問題 今天來聊一聊常用的三種緩存讀寫策略 首先我們來思考一個問題 寫 先更新緩存 再更新數(shù)據(jù)庫 首先如果緩存更新成功但數(shù)據(jù)庫更新失敗,會導(dǎo)致數(shù)據(jù)不一致的問題 其次當(dāng)請求

    2024年02月14日
    瀏覽(23)
  • redis面試題目-如何保證數(shù)據(jù)庫與緩存的數(shù)據(jù)一致性

    原視頻:https://www.bilibili.com/video/BV1Km4y1r75f?p=62vd_source=fa75329ae3880aa55609265a0e9f5d34 由于緩存和數(shù)據(jù)庫是分開的,無法做到原子性的同時進(jìn)行數(shù)據(jù)修改,可能出現(xiàn)緩存更新失敗,或者數(shù)據(jù)庫更新失敗的情況,這時候會出現(xiàn)數(shù)據(jù)不一致,影響前端業(yè)務(wù) 先更新數(shù)據(jù)庫,再更新緩存。緩

    2024年02月05日
    瀏覽(27)
  • Redis和數(shù)據(jù)庫保持?jǐn)?shù)據(jù)一致性方案

    Redis和數(shù)據(jù)庫保持?jǐn)?shù)據(jù)一致性方案

    Redis和數(shù)據(jù)庫一致性又稱為“雙寫一致性”,在分布式系統(tǒng)中,由于多個節(jié)點之間的并發(fā)讀寫操作,可能導(dǎo)致數(shù)據(jù)不一致的情況發(fā)生。本文將著重介紹如何通過使用Redis與數(shù)據(jù)庫相結(jié)合的方案來實現(xiàn)數(shù)據(jù)一致性。 首先,讀取數(shù)據(jù)時都是先查詢Redis,命中則直接返回,未命中則先

    2024年02月11日
    瀏覽(25)
  • Springcloud Alibaba使用Canal將Mysql數(shù)據(jù)實時同步到Redis保證緩存的一致性

    Springcloud Alibaba使用Canal將Mysql數(shù)據(jù)實時同步到Redis保證緩存的一致性

    目錄 ? 1. 背景 2. Windows系統(tǒng)安裝canal 3.Mysql準(zhǔn)備工作 4. 公共依賴包 5. Redis緩存設(shè)計 6. mall-canal-service ? canal [k?\\\'n?l] ,譯意為水道/管道/溝渠,主要用途是 基于 MySQL 數(shù)據(jù)庫增量日志解析,提供增量數(shù)據(jù)訂閱和消費 。其誕生的背景是早期阿里巴巴因為杭州和美國雙機(jī)房部署,存

    2024年02月03日
    瀏覽(20)
  • 106、Redis和Mysql如何保證數(shù)據(jù)一致

    先更新Mysql,再更新Redis,如果更新Redis失敗,可能仍然不一致 先刪除Redis緩存數(shù)據(jù),再更新Mysql,再次查詢的時候在將數(shù)據(jù)添加到緩存中,這種方案能解決1方案的問題,但是在高并發(fā)下性能較低,而且仍然會出現(xiàn)數(shù)據(jù)不一致的問題,比如線程1刪除了Redis緩存數(shù)據(jù),正在更新

    2024年02月15日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包