新聞中心
Redis同步:保證與數(shù)據(jù)庫信息一致性

網(wǎng)站的建設(shè)成都創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計體驗!已為成都水泥攪拌車等企業(yè)提供專業(yè)服務(wù)。
Redis是一款開源的內(nèi)存數(shù)據(jù)庫,由于其讀寫速度快、易擴展、高并發(fā)等特點,在互聯(lián)網(wǎng)企業(yè)中得到了廣泛應(yīng)用。然而,由于Redis的數(shù)據(jù)存儲在內(nèi)存中,一旦服務(wù)器宕機或者斷電,數(shù)據(jù)就有可能丟失。為了避免這種情況出現(xiàn),Redis提供了持久化功能,將數(shù)據(jù)保存到磁盤中,以保證數(shù)據(jù)不丟失。但是,持久化功能并不能完全解決數(shù)據(jù)一致性的問題。特別是在高并況下,Redis中的數(shù)據(jù)可能會和數(shù)據(jù)庫中的數(shù)據(jù)不一致。因此,需要對Redis進行同步,保證Redis中的數(shù)據(jù)和數(shù)據(jù)庫中的數(shù)據(jù)一致。
Redis的同步方式有兩種:master-slave同步和主從同步。
1. Master-slave同步
在Master-slave同步中,Redis服務(wù)器被分為兩類:Master節(jié)點和Slave節(jié)點。Master節(jié)點是主服務(wù)器,擁有讀寫權(quán)限;Slave節(jié)點是從服務(wù)器,只能讀取數(shù)據(jù)。Master節(jié)點在處理客戶端請求時,會把寫操作同步到所有的Slave節(jié)點中,從而保證所有節(jié)點中的數(shù)據(jù)一致。
Master-slave同步的使用方法如下:
(1)首先配置Master節(jié)點。
在Redis配置文件redis.conf中,將配置項requirepass和masterauth設(shè)置為同樣的密碼。這樣,就可以通過密碼來連接Master節(jié)點。
(2)配置Slave節(jié)點。
需要在Slave節(jié)點中配置Master節(jié)點的連接信息。具體的方法是在Slave節(jié)點的配置文件中加入如下配置項:
slaveof 主機IP地址 端口號
其中,主機IP地址和端口號是Master節(jié)點的IP地址和端口號。這樣就可以在Slave節(jié)點中設(shè)置Master節(jié)點。
(3)啟動Redis服務(wù)器。
啟動Master節(jié)點和Slave節(jié)點后,可以通過redis-cli工具連接Master節(jié)點,并添加一些數(shù)據(jù)。然后通過Slave節(jié)點來檢查Master節(jié)點的數(shù)據(jù)是否已經(jīng)同步。
Master-slave同步可以實現(xiàn)數(shù)據(jù)的實時同步,但是對于高并發(fā)的場景可能存在性能問題。因為Slave節(jié)點不只需要讀取Master節(jié)點的數(shù)據(jù),還需要將數(shù)據(jù)進行處理,與本地的數(shù)據(jù)進行比較,這樣會增加CPU和內(nèi)存使用,導(dǎo)致系統(tǒng)性能下降。
2. 主從同步
主從同步的方式和Master-slave同步不同,主從同步通過中間代理來完成數(shù)據(jù)同步。其中,代理服務(wù)器作為分發(fā)器,接收Master節(jié)點的數(shù)據(jù)并將其同步到Slave節(jié)點中。這種方式不僅提高了數(shù)據(jù)同步速度,還能保證數(shù)據(jù)的完整性和一致性。
主從同步的使用方法如下:
(1)首先配置主服務(wù)器。
在主服務(wù)器的redis.conf配置文件中開啟AOF或RDB功能。這樣,就可以將數(shù)據(jù)保存到磁盤中,以保證數(shù)據(jù)的完整性。
(2)配置代理服務(wù)器。
代理服務(wù)器需要在redis.conf配置文件中添加如下配置項:
slave-serve-stale-data yes
這個配置項是用來保證在Master服務(wù)器宕機時,代理服務(wù)器仍然能夠保持運行狀態(tài)。
(3)配置從服務(wù)器。
需要在從服務(wù)器的redis.conf配置文件中添加如下配置項:
slaveof 代理服務(wù)器IP地址 代理服務(wù)器端口號
這樣就可以在從服務(wù)器中設(shè)置代理服務(wù)器。
(4)啟動Redis服務(wù)器。
啟動主服務(wù)器、代理服務(wù)器和從服務(wù)器后,可以通過redis-cli工具連接到代理服務(wù)器,并添加一些數(shù)據(jù)。然后通過從服務(wù)器檢查數(shù)據(jù)是否都已經(jīng)同步。
主從同步方式可以保證數(shù)據(jù)的完整性和一致性,但是需要通過代理服務(wù)器進行同步,可能會出現(xiàn)代理服務(wù)器宕機的情況,導(dǎo)致數(shù)據(jù)同步失敗。
結(jié)論
為了保證Redis中的數(shù)據(jù)和數(shù)據(jù)庫中的數(shù)據(jù)一致,需要使用一些同步機制。其中,Master-slave同步可以實現(xiàn)實時同步,但是性能會受到影響;主從同步可以提高同步效率,但是需要代理服務(wù)器的支持。在不同的場景下,可以選擇合適的同步機制,以保證數(shù)據(jù)的完整性和一致性。
相關(guān)問題拓展閱讀:
- Redis主從復(fù)制以及其原理
- redis和mysql區(qū)別是什么(mysql+redis)
Redis主從復(fù)制以及其原理
在現(xiàn)有企業(yè)中80%公司大部分使用的是redis單機服務(wù),在實際的場景當中單一節(jié)點的redis容易面臨風險。
面臨問題
解決辦法
要實現(xiàn)分布式數(shù)據(jù)庫的更大的存儲容量和承受高并發(fā)訪問量,我們會將原來集寬或鬧中式數(shù)據(jù)庫的數(shù)據(jù)分別存儲到其他多個網(wǎng)絡(luò)節(jié)點上。
什么是主從復(fù)制
主從復(fù)制,是指將一臺Redis服務(wù)器的數(shù)據(jù),復(fù)制到其他的Redis服務(wù)器。前者稱為主節(jié)點(master),后者稱為從節(jié)點(slave),數(shù)據(jù)的復(fù)制是單向的,只能由主節(jié)點到從節(jié)點。
默認情況下,每臺Redis服務(wù)器都是主節(jié)點;且一個主節(jié)點可以有多個從節(jié)點(或沒有從節(jié)點),但一個從節(jié)點只能有一個主節(jié)點。
主從復(fù)制的作用
主從復(fù)制啟用
從節(jié)點開啟主從復(fù)制,有3種方式:
主從復(fù)制過程大體可以分為3個階段:連接建立階段(即準備階段)、數(shù)據(jù)同步階段、命令傳播階段。
在從節(jié)點執(zhí)行 slaveof 命令后,復(fù)制過程便開始運作,慎罩下面圖示大概可以看到,
從圖中可以看出復(fù)制過程大致分為6個過程
1)保存主節(jié)點(master)信息。
執(zhí)行 slaveof 后 Redis 會打印如下日志:
2)從節(jié)點(slave)內(nèi)部通過每秒運行的定時任務(wù)維護復(fù)制相關(guān)邏輯,當定時任務(wù)發(fā)現(xiàn)存在新的主節(jié)點后,會嘗試與該節(jié)點建立網(wǎng)絡(luò)連接
從節(jié)點與主節(jié)點建立網(wǎng)絡(luò)連接
從節(jié)點會建立一個 socket 套接字,從節(jié)點建立了一個端口為51234的套接字,專門用于接受主節(jié)點發(fā)送的復(fù)制命令。從節(jié)點連接成功后打印如下日志:
如果從節(jié)點無法建立連接,定時任務(wù)會無限重試直到連接成功或者執(zhí)行 slaveof no one 取消復(fù)制
關(guān)于連接失敗,可以在從節(jié)點執(zhí)行 info replication 查看 master_link_down_since_seconds 指標,它會記錄與主節(jié)點連接失敗的系統(tǒng)時間。從節(jié)點連接主節(jié)點失敗時也會每秒打印如下日志,方便發(fā)現(xiàn)問題:
3)發(fā)送 ping 命令。
連接建立成功后從節(jié)點發(fā)送 ping 請求進行首次通信,ping 請求主要目的如下:
·檢測主從之間網(wǎng)絡(luò)套接字是否可用。
·檢測主節(jié)點當前是否可接受處理命令。
如果發(fā)送 ping 命令后,從節(jié)點沒有收到主節(jié)點的 pong 回復(fù)或者超時,比如網(wǎng)絡(luò)超時或者主節(jié)點正在阻塞無法響應(yīng)命令,從節(jié)點會斷開復(fù)制連接,下次定時任務(wù)會發(fā)起重連。
從節(jié)點發(fā)送的 ping 命令成功返回,Redis 打印如下日志,并繼續(xù)后續(xù)復(fù)制流程:
4)權(quán)限驗證。如果主節(jié)點設(shè)置了 requirepass 參數(shù),則需要密碼驗證,從節(jié)點必須配置 masterauth 參數(shù)保證與主節(jié)點相同的密碼才能通過驗證;如果驗證失敗復(fù)制將終止,從節(jié)點重新發(fā)起復(fù)制流程。
5)同步數(shù)據(jù)集。主從復(fù)制連接正常通信后,對于首次建立復(fù)制的場景,主節(jié)點會把持有的數(shù)據(jù)全部發(fā)送給從節(jié)點,這部分操團培作是耗時最長的步驟。
6)命令持續(xù)復(fù)制。當主節(jié)點把當前的數(shù)據(jù)同步給從節(jié)點后,便完成了復(fù)制的建立流程。接下來主節(jié)點會持續(xù)地把寫命令發(fā)送給從節(jié)點,保證主從數(shù)據(jù)一致性。
redis和mysql區(qū)別是什么(mysql+redis)
1.mysql和redis的數(shù)據(jù)庫類型
mysql是關(guān)系型數(shù)據(jù)庫,主要用于存放持久化數(shù)據(jù),將數(shù)據(jù)虧此存儲在硬盤中,讀取速度較慢。
redis是NOSQL,即非關(guān)系型數(shù)據(jù)庫,也是緩存數(shù)據(jù)庫,即將數(shù)據(jù)存儲在緩存中,橘純緩存的讀取速度快,能夠大大的提高運行效率,但是保存時間有限
2.mysql的運行機制
mysql作為持久化存儲的關(guān)系型數(shù)據(jù)庫,相對薄弱的地方在于每次請求訪問數(shù)據(jù)庫時,都存在著I/O操作,如果反復(fù)頻繁的訪問數(shù)據(jù)庫。之一:會在反復(fù)鏈接數(shù)據(jù)庫上花費大量時間,從而導(dǎo)致運行效率過慢;第二:反復(fù)的訪問數(shù)據(jù)庫也會導(dǎo)致數(shù)據(jù)庫的負載過高,那么此時緩存的概念就衍生了出來。
3.緩存
緩存就是數(shù)據(jù)交換的緩沖區(qū)(cache),當瀏覽器執(zhí)行請求時,首先會對銷伍迅在緩存中進行查找,如果存在,就獲??;否則就訪問數(shù)據(jù)庫。
緩存的好處就是讀取速度快
4.redis數(shù)據(jù)庫
redis數(shù)據(jù)庫就是一款緩存數(shù)據(jù)庫,用于存儲使用頻繁的數(shù)據(jù),這樣減少訪問數(shù)據(jù)庫的次數(shù),提高運行效率。
5.redis和mysql的區(qū)別總結(jié)
(1)類型上
從類型上來說,mysql是關(guān)系型數(shù)據(jù)庫,redis是緩存數(shù)據(jù)庫
(2)作用上
mysql用于持久化的存儲數(shù)據(jù)到硬盤,功能強大,但是速度較慢
redis用于存儲使用較為頻繁的數(shù)據(jù)到緩存中,讀取速度快
(3)需求上
mysql和redis因為需求的不同,一般都是配合使用。
redis和數(shù)據(jù)庫信息一致性的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于redis和數(shù)據(jù)庫信息一致性, Redis同步:保證與數(shù)據(jù)庫信息一致性,Redis主從復(fù)制以及其原理,redis和mysql區(qū)別是什么(mysql+redis)的信息別忘了在本站進行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
新聞標題:Redis同步:保證與數(shù)據(jù)庫信息一致性(redis和數(shù)據(jù)庫信息一致性)
本文網(wǎng)址:http://www.fisionsoft.com.cn/article/ccoohsj.html


咨詢
建站咨詢
