Redis讀寫分離搭建的完整步驟
1、概述
隨著企業(yè)業(yè)務(wù)的不斷擴大,請求的并發(fā)量不斷增長,Redis可能終會出現(xiàn)無法負載的情況,此時我們就需要想辦法去提升Redis的負載能力。
讀寫分離(主從復(fù)制)是一個比較簡單的擴展方案,使用多臺機器同時運行Redis服務(wù),一臺負責寫服務(wù),多臺負責讀服務(wù),通過多臺服務(wù)器對請求進行負載,大大提高了Redis服務(wù)的負載壓力。
最常見的讀寫分離是一主二從的模式,一臺主服務(wù)器負責Redis寫入服務(wù),兩臺從服務(wù)器負責Redis的讀取服務(wù),從服務(wù)器定時從主服務(wù)器復(fù)制Redis數(shù)據(jù)。
今天我們就來聊聊Redis的讀寫分離如何搭建的。
2、讀寫分離的搭建
2.1 場景說明
主服務(wù)器IP:192.168.1.144
從服務(wù)器A IP:192.168.1.22
從服務(wù)器B IP:192.168.1.8
這三臺服務(wù)器上都已經(jīng)安裝好了Redis環(huán)境,安裝方法參見我的另一篇文章《Redis的安裝、基本使用以及與SpringBoot的整合》。
2.2 修改從服務(wù)器A和從服務(wù)B的Redis配置
replicaof 設(shè)置Redis主服務(wù)的IP和端口
masterauth 設(shè)置Redis主服務(wù)的密碼

2.3 刪除從服務(wù)器A和從服務(wù)器B的數(shù)據(jù)文件
# cd/usr/local/redis/db #rm -rf *.rdb *.aof
2.4 重啟從服務(wù)器A和從服務(wù)器B
#cd /etc/init.d/ #./redis_init_script stop # ./redis_init_script start
2.5 查看主從狀態(tài)
# redis-cli > AUTH zhuifengren >info replication
主服務(wù)器狀態(tài):

從服務(wù)器A狀態(tài):

從服務(wù)器B狀態(tài):

2.6 測試主從復(fù)制
此時,在主服務(wù)器,寫入Redis值,在從服務(wù)器就可以讀取。
3、Redis讀寫分離優(yōu)勢
透明兼容
讀寫分離和普通集群規(guī)格一樣,都使用了redis-proxy做請求轉(zhuǎn)發(fā),多分片令使用存在一定的限制,但從主從升級單分片讀寫分離,或者從集群升級到多分片的讀寫分離集群可以做到完全兼容。
用戶和redis-proxy建立連接,redis-proxy會識別出客戶端連接發(fā)送過來的請求是讀還是寫,然后按照權(quán)重作負載均衡,將請求轉(zhuǎn)發(fā)到后端不同的DB節(jié)點中,寫請求轉(zhuǎn)發(fā)給master,讀操作轉(zhuǎn)發(fā)給read-only replica(master默認也提供讀,可以通過權(quán)重控制)。
用戶只需要購買讀寫分離規(guī)格的實例,直接使用任何客戶端即可直接使用,業(yè)務(wù)不用做任何修改就可以開始享受讀寫分離服務(wù)帶來的巨大性能提升,接入成本幾乎為0。
高可用
高可用模塊(HA)監(jiān)控所有DB節(jié)點的健康狀態(tài),為整個實例的可用性保駕護航。master宕機時自動切換到新主。如果某個read-only replica宕機,HA也能及時感知,然后重搭一個新的read-only replica,下線宕機節(jié)點。
除HA之外,redis-proxy也能實時感知每個read-only replica的狀態(tài)。在某個read-only replica異常期間,redis-proxy會自動降低這個節(jié)點的權(quán)重,如果發(fā)現(xiàn)某個read-only replica連續(xù)失敗超過一定次數(shù)以后,會暫時屏蔽異常節(jié)點,直到異常消失以后才會恢復(fù)其正常權(quán)重。
redis-proxy和HA一起做到盡量減少業(yè)務(wù)對后端異常的感知,提高服務(wù)可用性。
高性能
對于讀多寫少的業(yè)務(wù)場景,直接使用集群版本往往不是最合適的方案,現(xiàn)在讀寫分離提供了更多的選擇,業(yè)務(wù)可以根據(jù)場景選擇最適合的規(guī)格,充分利用每一個read-only replica的資源。
目前單shard對外售賣1 master + 1/3/5 read-only replica多種規(guī)格(如果有更大的需求可以提工單反饋),提供60萬QPS和192 MB/s的服務(wù)能力,在完全兼容所有命令的情況下突破單機的資源限制。后續(xù)將去掉規(guī)格限制,讓用戶根據(jù)業(yè)務(wù)流量隨時自由的增加或減少read-only replica數(shù)量。
4、綜述
今天介紹了Redis讀寫分離的搭建,相對來說是比較容易的,但讀寫分離有個缺點,當主服務(wù)宕機后,從服務(wù)是不能升級成主服務(wù)的。
為了解決這個單點問題,后面我們會介紹Redis的哨兵模式和集群模式。
到此這篇關(guān)于Redis讀寫分離搭建的文章就介紹到這了,更多相關(guān)Redis讀寫分離搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文搞懂阿里云服務(wù)器部署Redis并整合Spring?Boot
這篇文章主要介紹了一文搞懂阿里云服務(wù)器部署Redis并整合Spring?Boot,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09
redis中使用bloomfilter的白名單功能解決緩存穿透問題
本文主要介紹了redis中使用bloomfilter的白名單功能解決緩存穿透問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
使用lua+redis解決發(fā)多張券的并發(fā)問題
這篇文章主要介紹了使用lua+redis解決發(fā)多張券的并發(fā)問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
Redis總結(jié)筆記(二):C#連接Redis簡單例子
這篇文章主要介紹了Redis總結(jié)筆記(二):C#連接Redis簡單例子,需要的朋友可以參考下2015-01-01
為什么RedisCluster設(shè)計成16384個槽
本文主要介紹了為什么RedisCluster設(shè)計成16384個槽,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
Redis出現(xiàn)(error)NOAUTH?Authentication?required.報錯的解決辦法(秒懂!)
這篇文章主要給大家介紹了關(guān)于Redis出現(xiàn)(error)NOAUTH?Authentication?required.報錯的解決辦法,對于 這個錯誤這通常是因為Redis服務(wù)器需要密碼進行身份驗證,但客戶端沒有提供正確的身份驗證信息導(dǎo)致的,需要的朋友可以參考下2024-03-03

