免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

Redis與數(shù)據(jù)庫數(shù)據(jù)一致性的示例分析

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)redis與數(shù)據(jù)庫數(shù)據(jù)一致性的示例分析,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)公司的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個(gè)不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對(duì)成都網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。

     可能談到保持RedisMySQL雙庫的數(shù)據(jù)一致性,可能很多人最先想到的方案就是讀請(qǐng)求和寫請(qǐng)求串行化,串到一個(gè)內(nèi)存隊(duì)列里去。  但是這個(gè)方案有著一個(gè)致命的缺點(diǎn):讀請(qǐng)求和寫請(qǐng)求串行化會(huì)導(dǎo)致系統(tǒng)的吞吐量大幅度降低,需要使用比正常情況下多幾倍的機(jī)器去支撐線上的一個(gè)請(qǐng)求。RedisMysql雙庫的數(shù)據(jù)一致性問題為何會(huì)出現(xiàn)呢?其實(shí)我們可以考慮這么一個(gè)業(yè)務(wù)場景:我們需要更新部分?jǐn)?shù)據(jù),我們首先更新數(shù)據(jù)庫數(shù)據(jù),然后清除Redis緩存中的數(shù)據(jù)。但是數(shù)據(jù)庫更新操作成功了,然而Redis清除緩存出現(xiàn)異常了,這樣會(huì)導(dǎo)致出現(xiàn)這么一種情況:數(shù)據(jù)庫中的數(shù)據(jù)已經(jīng)更新為最新數(shù)據(jù),但是Redis緩存中的數(shù)據(jù)依舊還是老數(shù)據(jù),這時(shí)候就會(huì)出現(xiàn)RedisMysql雙庫的數(shù)據(jù)一致性問題。

     有些喜歡投機(jī)取巧的朋友就會(huì)想,那我先清掉緩存中的舊數(shù)據(jù),然后再寫入新數(shù)據(jù)到數(shù)據(jù)庫,最后更新緩存不就可以了么?這種方式可能出現(xiàn)一種  問題:我們清除Redis緩存成功了,但是寫入還未將新數(shù)據(jù)寫入到數(shù)據(jù)庫之前有讀請(qǐng)求的發(fā)生,就會(huì)導(dǎo)致數(shù)據(jù)庫中的舊數(shù)據(jù)再次存入Redis中,然后等到新數(shù)據(jù)寫入到數(shù)據(jù)庫后,一樣產(chǎn)生了。RedisMysql雙庫的數(shù)據(jù)一致性問題。

     昨天談到Redis分布式環(huán)境其實(shí)有說到,分布式環(huán)境下,數(shù)據(jù)讀寫操作是并發(fā)操作,所以導(dǎo)致對(duì)用一份數(shù)據(jù)進(jìn)行讀寫操作先后執(zhí)行順序無法保證,所以就可能出現(xiàn)讀操作先于寫操作被執(zhí)行,這時(shí)就會(huì)出現(xiàn)臟數(shù)據(jù)導(dǎo)致數(shù)據(jù)一致性問題的產(chǎn)生。這時(shí)候我們需要考慮我們讀取的數(shù)據(jù)是否是強(qiáng)一致性數(shù)據(jù),比如賬戶余額這種必須是強(qiáng)一致性數(shù)據(jù),則讀數(shù)據(jù)庫,如果讀取的數(shù)據(jù)實(shí)時(shí)性沒有非常嚴(yán)格,比如積分排行榜等,就可以直接讀取Redis數(shù)據(jù)。如果機(jī)器并發(fā)量不高的情況下,讀取數(shù)據(jù)優(yōu)先從Redis中讀取,緩存中數(shù)據(jù)不存在才選擇從數(shù)據(jù)庫中獲取,并且把從數(shù)據(jù)庫獲取到的數(shù)據(jù)寫入Redis。寫入數(shù)據(jù)則相反,先清除Redis緩存數(shù)據(jù),再寫入數(shù)據(jù)到數(shù)據(jù)庫,如果是簡單數(shù)據(jù)這時(shí)候可以實(shí)時(shí)寫入到Redis中供讀操作讀取,如果是需要多表連表查詢的數(shù)據(jù),則可以暫時(shí)不寫入Redis,等到有查詢操作的時(shí)候再寫入到Redis

     那如果是高并發(fā)的情況下呢?在高并發(fā)的情況下,讀取數(shù)據(jù)操作和上面是一樣,優(yōu)先從Redis讀取。但是寫入數(shù)據(jù)操作就和剛才做法不一樣了,高并發(fā)的情況下,寫入數(shù)據(jù)先寫入到Redis,然后定期從Redis寫入到Mysql中。高并發(fā)的情況下需要注意的是,每個(gè)讀取數(shù)據(jù)的請(qǐng)求都需要在超時(shí)時(shí)間內(nèi)返回?cái)?shù)據(jù),如果數(shù)據(jù)更新很頻繁,可能會(huì)導(dǎo)致Redis積壓了一系列更新操作,從而導(dǎo)致大量的讀取數(shù)據(jù)請(qǐng)求超時(shí),最后這大量的讀取數(shù)據(jù)請(qǐng)求全部壓到數(shù)據(jù)庫,導(dǎo)致緩存擊穿的現(xiàn)象產(chǎn)生,嚴(yán)重可能導(dǎo)致數(shù)據(jù)庫宕機(jī)。這時(shí)候解決方案其實(shí)一般通過增加機(jī)器來增加吞吐量,或者暫時(shí)先返回一個(gè)老數(shù)據(jù)給客戶端。
      所以到這里我們其實(shí)方案很明確了,一共有兩種比較常見的方案:Redis是作為緩存服務(wù)器使用,一般作為緩存有兩個(gè)用途:請(qǐng)求快速處理和減少I/O頻率。減少I/O頻率實(shí)際上就是剛才所說的高并發(fā)情況下數(shù)據(jù)實(shí)時(shí)寫入到數(shù)據(jù)庫,然后數(shù)據(jù)積累到一定程度定期寫入到數(shù)據(jù)庫,請(qǐng)求快速處理就是處理讀請(qǐng)求時(shí)有限從Redis中獲取,Redis是支持高并發(fā)操作的,所以處理速度很快,如果Redis中不存在數(shù)據(jù),再去數(shù)據(jù)庫中查詢,然后寫入到redis中緩存,以便二次讀取可以直接從緩存中取到數(shù)據(jù)。

      第二種方案其實(shí)就是異步異步緩存,Redis緩存熱門數(shù)據(jù),增刪改查都在Mysql操作,只要Mysqlinsertupdatedelete操作,可以通過kafka或者rabbitMQ等第三方消息推送工具將binlog相關(guān)的消息推送到Redis中,Redis解析binlog中的數(shù)據(jù)對(duì)Redis緩存中的數(shù)據(jù)進(jìn)行更新,Mysql中的主從備份機(jī)制也是通過binlog來實(shí)現(xiàn)數(shù)據(jù)一致性的。

上述就是小編為大家分享的Redis與數(shù)據(jù)庫數(shù)據(jù)一致性的示例分析了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章名稱:Redis與數(shù)據(jù)庫數(shù)據(jù)一致性的示例分析
URL地址:http://m.newbst.com/article46/goheeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)ChatGPT企業(yè)網(wǎng)站制作品牌網(wǎng)站建設(shè)電子商務(wù)網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司