中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis集群主從模式怎么配置

發布時間:2022-04-26 13:36:25 來源:億速云 閱讀:687 作者:zzz 欄目:關系型數據庫

這篇文章主要介紹“Redis集群主從模式怎么配置”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Redis集群主從模式怎么配置”文章能幫助大家解決問題。

Redis集群主從模式怎么配置

一、為什么需要集群?

在我們的實際開發當中,只使用一臺Redis運用于工程項目中是不可以的,原因如下:

(1)從結構上,單個Redis服務器會發生單點故障,并且一臺服務器需要處理所有的請求負載,壓力較大;

(2)從容量上,單個Redis服務器內存容量有限,就算一臺Redis服務器內存容量為256G,也不能將所有內存用作Redis存儲內存,一般來說,單臺Redis最大使用內存不應該超過20G。

(3)單臺Redis服務器的讀寫性能有限,利用集群可以提高讀寫能力。

二、主從模式

介紹

目前,Redis有三種集群模式,分別是:主從模式,哨兵模式,Cluster模式;主從模式是三種模式中最簡單的,在主從復制中,是指將一臺Redis服務器的數據,復制到其他的Redis服務器。前者稱為主節點(master/leader),后者稱為從節點(slave/follower)。

注意:

(1)數據的復制是單向的,只能由主節點到從節點。Master以寫為主,Slave 以讀為主。
(2)默認情況下,每臺Redis服務器都是主節點;
(3)一個主節點可以有多個從節點(或沒有從節點),但一個從節點只能有一個主節點。

Redis集群主從模式怎么配置

作用

1、數據冗余:主從復制實現了數據的熱備份,是持久化之外的一種數據冗余方式。
2、故障恢復:當主節點出現問題時,可以由從節點提供服務,實現快速的故障恢復;實際上是一種服務的冗余。
3、高可用(集群)基石:主從復制還是哨兵和集群能夠實施的基礎,因此說主從復制是Redis高可用的基礎。
4、負載均衡:在主從復制的基礎上,配合讀寫分離,可以由主節點提供寫服務,由從節點提供讀服務(即寫Redis數據時應用連接主節點,讀Redis數據時應用連接從節點),分擔服務器負載;尤其是在寫少讀多的場景下,通過多個從節點分擔讀負載,可以大大提高Redis服務器的并發量。

例如在我們的電商網站可以發現,對于一個商品只需要上傳一次,但其卻能夠被用戶瀏覽多次,也就是“寫少讀多”這種情況,我們可以利用主從復制進行讀寫分離減緩服務器的壓力

Redis集群主從模式怎么配置

三、搭建主從集群

3.1、準備工作

1、復制三個配置文件(原名:redis.conf),并分別重命名為:redis79.conf,redis80.conf,redis81.conf。

Redis集群主從模式怎么配置

2、修改配置文件

(1)修改redis79.conf

修改端口號

port 6379

設置為后臺運行

daemonize:yes

設置日志文件的名字

logfile “6379.log"

設置db文件名字

dbfilename dump6379.rdb

(2)修改redis80.conf

修改端口號

port 6380

設置為后臺運行

daemonize:yes

設置記錄進程Id文件名字

pidfile /var/run/redis_6380.pid

設置日志文件的名字

logfile “6380.log"

設置db文件名字

dbfilename dump6380.rdb

(3)修改redis81.conf

修改端口號

port 6381

設置為后臺運行

daemonize:yes

設置記錄進程Id文件名字

pidfile /var/run/redis_6381.pid

設置日志文件的名字

logfile “6381.log"

設置db文件名字

dbfilename dump6381.rdb

這幾個屬性的作用如下:

pid(port ID):記錄了進程的 ID,文件帶有鎖。可以防止程序的多次啟動。
logfile:明確日志文件的位置
dbfilename:dumpxxx.file  #持久化文件位置
port:進程占用的端口號

3.2、搭建一主二從

啟動Redis服務器

注意:默認情況下,每臺Reids服務器都是主節點,而我們要搭建主從只需要在從機那本搭建即可。

現在分別啟動redis79,redis80,redis81服務器。

redis-server redis79.conf 
redis-server redis80.conf
redis-server redis81.conf

使用以下命令,查看是否啟動成功:

 ps -ef|grep redis

Redis集群主從模式怎么配置

打開三個客戶端窗口,分別對應操作三個Redis服務器。

輸入命令:

注意要指定端口,才知道我們要打開哪一個Redis。

窗口一:

redis-cli -p 6379

窗口二:

redis-cli -p 6380

窗口三:

redis-cli -p 6381

設置主從關系

我們將redis79設置為主節點,而將redis80和redis81設置為從結點。

配置主機的IP地址和端口號,相當于想認其為自己的老大。

redis80:

#SLAVEOF IP地址  端口
127.0.0.1:6380> slaveof 127.0.0.1 6379
OK

redis81:

#SLAVEOF IP地址  端口
127.0.0.1:6381> slaveof 127.0.0.1 6379
OK

這個時候,我們在從機使用INFO命令就可以查看主從關系了:

info replication

Redis集群主從模式怎么配置

而此時我們去主機redis79中使用同樣的命令進行查看:

Redis集群主從模式怎么配置

現在我們的一主二從的關系就成功搭建好了!

提示:如果要將從機變成主機,我們只需要在從機執行以下命令,即可讓自己變為主機。

SLAVEOF no one

四、知識講解

知識一

主機可以進行讀寫操作,而從機只能讀操作。

注意:主機中的所有信息和數據,都會自動被從機保存。

主機:

127.0.0.1:6379> set key1 v1
OK
127.0.0.1:6379> get key1
"v1"

從機:

127.0.0.1:6380> get key1  
"v1"
127.0.0.1:6380> set key2 v2    #進行寫操作就會報錯,提示從機只能進行讀操作
(error) READONLY You can't write against a read only replica.

知識二

主機如果宕機了,從機依舊可以讀取到主機宕機前的數據,但仍然沒有寫操作,如果主機恢復過來了,從機依舊可以獲取到主機寫的數據。

(1)停止主機進程(演示主機宕機了)

停止進程的命令:

kill -9 pid #pid為redis進程號

Redis集群主從模式怎么配置

(2)從機獲取宕機前主機寫入的數據

可以發現,能夠順利拿到,但仍然是無法進行寫操作的。

Redis集群主從模式怎么配置

(3)恢復主機

redis-server redis79.conf

(4)主機重新寫入數據,從機獲取最新數據。

主機寫入數據:

127.0.0.1:6379> set k2 yixin
OK

從機讀取最新數據:

127.0.0.1:6380> get k2
"yixin"

知識三

兩種配置方式下的從機斷開情況

a、命令行設置主從關系

從機斷開了,其重新連接后變為主機,能拿到斷開之前的數據,但拿不到主機新寫入的值,如果重新設置主從關系,就可以拿到主機全部的數據了。

(1)停止從機進程。

Redis集群主從模式怎么配置

(2)主機寫入新數據。

127.0.0.1:6379> set k3 new
OK

(3)重新啟動從機服務器。

redis-server redis80.conf

(4)嘗試獲取從機宕機前主機寫入的數據,發現可以拿到。

127.0.0.1:6380> get k1
"v1"

(5)嘗試獲取從機宕機期間主機寫入的數據,發現無法拿到了。

127.0.0.1:6380> get k3
(nil)

此次我們可以進行查看主從關系,由于是命令行配置的,所以重啟之后又變回主機了。

127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:0

(6)如果要拿到主機的所有數據,只要執行以下命令重新配置主從關系就可以了。

slaveof 127.0.0.1 6379

b、配置文件設置的主從關系

從機斷開后,重新連接,也是可以拿到主機的全部數據的。

(1)修改配置文件redis80.conf,添加主從關系。

#指定主機的ip與port
slaveof 127.0.0.1 6379

(2)主機添加新數據

127.0.0.1:6379> set k5 hello
OK

(3)重新啟動redis80服務器。

redis-server redis80.conf

(4)獲取從機宕機期間主機新寫入的數據,發現現在可以順利拿到了。

127.0.0.1:6380> get k5
"hello"

我們來查看6380的主從關系,可以發現在重啟的時候就已經設置好主從關系了

Redis集群主從模式怎么配置

五、復制原理

(1)Slave 啟動成功連接到 Master 后會發送一個sync同步命令

(2)Master 接到命令,啟動后臺的存盤進程,同時收集所有接收到的用于修改數據集命令,在后臺進程執行完畢之后,master將傳送整個數據文件到slave,并完成一次完全同步。

(3)全量復制:而slave服務在接收到數據庫文件數據后,將其存盤并加載到內存中。

(4)增量復制:Master 繼續將新的所有收集到的修改命令依次傳給slave,完成同步。

注意:只要是重新連接master,一次完全同步(全量復制)將被自動執行! 我們的數據一定可以在從機中看到。

六、主從模式的優缺點

優點

(1)同一個Master可以同步多個Slaves。
(2)Slave同樣可以接受其它Slaves的連接和同步請求,這樣可以有效的分載Master的同步壓力。因此我們可以將Redis的Replication架構視為圖結構。
(3)Master Server是以非阻塞的方式為Slaves提供服務。所以在Master-Slave同步期間,客戶端仍然可以提交查詢或修改請求。
(4)Slave Server同樣是以非阻塞的方式完成數據同步。在同步期間,如果有客戶端提交查詢請求,Redis則返回同步之前的數據。
(5)為了分載Master的讀操作壓力,Slave服務器可以為客戶端提供只讀操作的服務,寫服務仍然必須由Master來完成。即便如此,系統的伸縮性還是得到了很大的提高。
(6)Master可以將數據保存操作交給Slaves完成,從而避免了在Master中要有獨立的進程來完成此操作。
(7)支持主從復制,主機會自動將數據同步到從機,可以進行讀寫分離。

缺點

(1) Redis 主從模式不具備自動容錯和恢復功能,如果主節點宕機,Redis 集群將無法工作,此時需要人為干預,將從節點提升為主節點。
(2) 如果主機宕機前有一部分數據未能及時同步到從機,即使切換主機后也會造成數據不一致的問題,從而降低了系統的可用性。
(3) 因為只有一個主節點,所以其寫入能力和存儲能力都受到一定程度地限制。
(4) 在進行數據全量同步時,若同步的數據量較大可能會造卡頓的現象。

關于“Redis集群主從模式怎么配置”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永平县| 桃源县| 东辽县| 呼图壁县| 东山县| 利川市| 三门峡市| 石棉县| 永靖县| 巴塘县| 沙湾县| 灵台县| 玛曲县| 南木林县| 大竹县| 荆门市| 樟树市| 友谊县| 堆龙德庆县| 开平市| 永和县| 湖南省| 旅游| 辽宁省| 县级市| 新邵县| 昭苏县| 科技| 肇州县| 商丘市| 辰溪县| 甘德县| 孝义市| 台中县| 昂仁县| 酒泉市| 涟源市| 福鼎市| 扬中市| 莎车县| 定安县|