Redis讀寫分離搭建的完整步驟
1、概述
隨著企業(yè)業(yè)務(wù)的不斷擴大,請求的并發(fā)量不斷增長,Redis可能終會出現(xiàn)無法負(fù)載的情況,此時我們就需要想辦法去提升Redis的負(fù)載能力。
讀寫分離(主從復(fù)制)是一個比較簡單的擴展方案,使用多臺機器同時運行Redis服務(wù),一臺負(fù)責(zé)寫服務(wù),多臺負(fù)責(zé)讀服務(wù),通過多臺服務(wù)器對請求進行負(fù)載,大大提高了Redis服務(wù)的負(fù)載壓力。
最常見的讀寫分離是一主二從的模式,一臺主服務(wù)器負(fù)責(zé)Redis寫入服務(wù),兩臺從服務(wù)器負(fù)責(zé)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)重作負(fù)載均衡,將請求轉(zhuǎn)發(fā)到后端不同的DB節(jié)點中,寫請求轉(zhuǎn)發(fā)給master,讀操作轉(zhuǎn)發(fā)給read-only replica(master默認(rèn)也提供讀,可以通過權(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讀寫分離的搭建,相對來說是比較容易的,但讀寫分離有個缺點,當(dāng)主服務(wù)宕機后,從服務(wù)是不能升級成主服務(wù)的。
為了解決這個單點問題,后面我們會介紹Redis的哨兵模式和集群模式。
到此這篇關(guān)于Redis讀寫分離搭建的文章就介紹到這了,更多相關(guān)Redis讀寫分離搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis的數(shù)據(jù)存儲及String類型的實現(xiàn)
這篇文章主要介紹了Redis的數(shù)據(jù)存儲及String類型的實現(xiàn),redis作為k-v數(shù)據(jù)存儲,因查找和操作的時間復(fù)雜度都是O(1)和豐富的數(shù)據(jù)類型及數(shù)據(jù)結(jié)構(gòu)的優(yōu)化,了解了這些數(shù)據(jù)類型和結(jié)構(gòu)更有利于我們平時對于redis的使用,需要的朋友可以參考下2022-10-10
Redis數(shù)據(jù)結(jié)構(gòu)之鏈表詳解
大家好,本篇文章主要講的是Redis數(shù)據(jù)結(jié)構(gòu)之鏈表詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
通過 Redis 實現(xiàn) RPC 遠程方法調(diào)用(支持多種編程語言)
這篇文章主要介紹了通過 Redis 實現(xiàn) RPC 遠程方法調(diào)用,支持多種編程語言,本文就以Ruby和Python為例,給出了實現(xiàn)代碼,需要的朋友可以參考下2014-09-09

