日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
RedisCluster主從模式詳解
在軟件的架構(gòu)中,主從模式(Master-Slave)是使用較多的一種架構(gòu)。主(Master)和從(Slave)分別部署在不同的服務(wù)器上,當(dāng)主節(jié)點服務(wù)器寫入數(shù)據(jù)時,同時也會將數(shù)據(jù)同步至從節(jié)點服務(wù)器,通常情況下,主節(jié)點負責(zé)寫入數(shù)據(jù),而從節(jié)點負責(zé)讀取數(shù)據(jù)。

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比巧家網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式巧家網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋巧家地區(qū)。費用合理售后完善,十年實體公司更值得信賴。

主從模式解析

主從模式的結(jié)構(gòu)圖如下:



圖1:Redis 主從模式

如圖 1 所示,Redis 主機會一直將自己的數(shù)據(jù)復(fù)制給 Redis 從機,從而實現(xiàn)主從同步。在這個過程中,只有 master 主機可執(zhí)行寫命令,其他 salve 從機只能只能執(zhí)行讀命令,這種讀寫分離的模式可以大大減輕 Redis 主機的數(shù)據(jù)讀取壓力,從而提高了Redis 的效率,并同時提供了多個數(shù)據(jù)備份。主從模式是搭建 Redis Cluster 集群最簡單的一種方式。

主從模式實現(xiàn)

Redis 提供了兩種實現(xiàn)主從模式的方法,下面進行逐一介紹。為了方便演示,我們只從一臺機器上搭建主從模式。

1) 使用命令實現(xiàn)

使用命令在服務(wù)端搭建主從模式,其語法格式如下:

redis-server --port  --slaveof  

執(zhí)行以下命令:

#開啟開啟一個port為6300的從機,它依賴的主機port=6379
C:\Users\Administrator> redis-server --port 6300 --slaveof 127.0.0.1 6379

輸出結(jié)果如下圖:



圖2:Redis 主從模式

 

接下來開啟客戶端,并執(zhí)行查詢命令,如下所示:

C:\Users\Administrator>redis-cli -p 6300
127.0.0.1:6300> get name
"jack"
127.0.0.1:6300> get website
"www.biancheng.net"
#不能執(zhí)行寫命令
127.0.0.1:6300> set myname BangDe
(error) READONLY You can't write against a read only slave.
127.0.0.1:6300> keys *
1) "myset:__rand_int__"
2) "ID"
3) "title"
4) "course2"
5) "website"
6) "age"
7) "user:2"
8) "salary"
9) "mystream"
10) "key:__rand_int__"
11) "user:uv:2021011308"
....

注意:此時 port=6300 的服務(wù)端界面不能關(guān)閉。從上述命令可以看出,port =6300 的從機,完全備份了主機的數(shù)據(jù),它可以執(zhí)行查詢命令,但是不能執(zhí)行寫入命令。

如果你注意觀察服務(wù)端的話,您會看到以下提示:

[18160] 20 Jan 17:40:34.101 # Server initialized #服務(wù)初始化
[18160] 20 Jan 17:40:34.108 * Ready to accept connections #準(zhǔn)備連接
[18160] 20 Jan 17:40:34.108 * Connecting to MASTER 127.0.0.1:6379 #連接到主服務(wù)器
[18160] 20 Jan 17:40:34.109 * MASTER <-> REPLICA sync started #啟動副本同步
[18160] 20 Jan 17:40:34.110 * Non blocking connect for SYNC fired the event.#自動觸發(fā)SYNC命令,請求同步數(shù)據(jù)
[18160] 20 Jan 17:40:34.110 * Master replied to PING, replication can continue...
[18160] 20 Jan 17:40:34.112 * Partial resynchronization not possible (no cached master)
[18160] 20 Jan 17:40:34.431 * Full resync from master: 6eb220706f73107990c2b886dbc2c12a8d0d9d05:0
[18160] 20 Jan 17:40:34.857 * MASTER <-> REPLICA sync: receiving 6916 bytes from master #從主機接受了數(shù)據(jù),并將其存在于磁盤
[18160] 20 Jan 17:40:34.874 * MASTER <-> REPLICA sync: Flushing old data #清空原有數(shù)據(jù)
[18160] 20 Jan 17:40:34.874 * MASTER <-> REPLICA sync: Loading DB in memory #將磁盤中數(shù)據(jù)載入內(nèi)存
[18160] 20 Jan 17:40:34.879 * MASTER <-> REPLICA sync: Finished with success #同步數(shù)據(jù)完成

可以看出主從模式下,數(shù)據(jù)的同步是自動完成的,這個數(shù)據(jù)同步的過程,又稱為
全量復(fù)制。

您也可以使用下面的命令來創(chuàng)建主從模式。啟動一個服務(wù)端,并指定端口號:

#指定端口號為63001,不要關(guān)閉
redis-server --port 63001

打開一個客戶端,連接服務(wù)器,如下所示:

#連接port=63001的服務(wù)器
C:\Users\Administrator>redis-cli -p 63001
#現(xiàn)在處于主機模式下,所以允許讀寫數(shù)據(jù)
127.0.0.1:63001> keys *
1) "FANS"
2) "user:login"
3) "course2"
4) "1"
5) "age"
6) "ID"
7) "title"
8) "counter:__rand_int__"
9) "key:__rand_int__"
10) "user:3"
11) "user:2"
...
127.0.0.1:63001> set myname 123456
OK
#將當(dāng)前服務(wù)器設(shè)置成從服務(wù)器,從屬于6379
127.0.0.1:63001> SLAVEOF 127.0.0.1 6379
OK
#寫入命令執(zhí)行失敗
127.0.0.1:63001> SET mywebsite www.biancheng.net
(error) READONLY You can't write against a read only replica.
#再次切換為主機模式,執(zhí)行下面命令
127.0.0.1:63001> SLAVEOF no one
OK
#寫入成功
127.0.0.1:63001> SET mywebsite www.biancheng.net
OK

上述示例中,主要使用了兩個命令,如下所示:

slaveof IP PORT #設(shè)置從服務(wù)器
slaveof no one  #使服務(wù)器切換為獨立主機

2) 修改配置文件實現(xiàn)

每個 Redis 服務(wù)器都有一個與其對應(yīng)的配置文件,通過修改該配置文件也可以實現(xiàn)主從模式,下面在 Ubuntu 環(huán)境下對該方法進行演練。

新建 redis_6302.conf 文件,并添加以下配置信息:

slaveof 127.0.0.1 6379 #指定主機的ip與port
port 6302 #指定從機的端口

啟動 Redis 服務(wù)器,執(zhí)行以下命令:

$ redis-server redis_6302.conf

客戶端連接服務(wù)器,并進行簡單測試。執(zhí)行以下命令:

$ redis-cli -p 6302
127.0.0.1:6300> HSET user:username biangcheng
#寫入失敗
(error) READONLY You can't write against a read only slave.

提示:通過命令搭建主從模式,簡單又快捷,所以不建議您使用修改配置文件的方法。

主從模式不足

主從模式并不完美,它也存在許多不足之處,下面做了簡單地總結(jié):

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

雖然主從模式存在上述不足,但它仍是實現(xiàn)分布式集群的基礎(chǔ),后續(xù)將介紹《Redis集群:Sentinel哨兵模式》,它同樣依賴于主從模式實現(xiàn)。


分享文章:RedisCluster主從模式詳解
當(dāng)前地址:http://www.dlmjj.cn/article/coidejp.html