最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

redis集群主從節(jié)點(diǎn)自動(dòng)切換方式

 更新時(shí)間:2024年01月18日 09:47:37   作者:nedjie  
這篇文章主要介紹了redis集群主從節(jié)點(diǎn)自動(dòng)切換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

redis集群主從節(jié)點(diǎn)自動(dòng)切換

最近在將redis作為數(shù)據(jù)庫(kù)使用(redis中存放大量數(shù)據(jù))的項(xiàng)目中,偶然發(fā)現(xiàn)redis的主從節(jié)點(diǎn)發(fā)生了變化,但是沒有任務(wù)報(bào)錯(cuò),redis集群的各節(jié)點(diǎn)也沒有fail狀態(tài),因此記錄學(xué)習(xí)一下,redis的深層機(jī)制。

為什么

首先redis是單線程的,所有的命令發(fā)送的redis會(huì)進(jìn)入一個(gè)隊(duì)列,依次執(zhí)行。

當(dāng)數(shù)據(jù)量很大時(shí),執(zhí)行flushall、keys、scan等耗時(shí)較長(zhǎng)的命令時(shí),就會(huì)照成redis節(jié)點(diǎn)阻塞。

其次,了解一下redis的集群節(jié)點(diǎn)檢測(cè)機(jī)制。redis集群的其他節(jié)點(diǎn),每隔一斷時(shí)間,就會(huì)向集群中的其他節(jié)點(diǎn)發(fā)送ping包,以檢測(cè)節(jié)點(diǎn)是否還活著。

如果此時(shí),某個(gè)主節(jié)點(diǎn)阻塞了,收到pong包的時(shí)間超時(shí),大于 cluster-node-timeout,就會(huì)自動(dòng)切換主從節(jié)點(diǎn)。

此時(shí),在redis-cli中查看cluster nodes,會(huì)發(fā)現(xiàn)節(jié)點(diǎn)會(huì)短暫的出現(xiàn)fail狀態(tài)。

當(dāng)主從節(jié)點(diǎn)切換完畢,redis又會(huì)重新掃描一下集群中的所有redis節(jié)點(diǎn),當(dāng)阻塞的redis節(jié)點(diǎn),執(zhí)行完之后,又會(huì)重新回到正常狀態(tài)。

解決

了解了上面說(shuō)的redis機(jī)制之后,如果想要避免redis節(jié)點(diǎn)自動(dòng)切換就很簡(jiǎn)單了,只需要調(diào)大redis.conf中的配置項(xiàng)cluster-node-timeout(默認(rèn)15000 millisec)即可。

Redis的主從復(fù)制

主從復(fù)制

主機(jī)數(shù)據(jù)更新后根據(jù)配置和策略,自動(dòng)同步到從機(jī)的master/slave機(jī)制,Master以寫為主,Slave以讀為主。

一主二從

一主二從原理

1、配從(庫(kù))不配主(庫(kù))

2、配從(庫(kù)): slaveof 主庫(kù)IP 主庫(kù)端口

3、主寫從讀、讀寫分離

4、從連前后同

5、主斷從待命、從斷重新連

一主二從搭建

1、一臺(tái)服務(wù)器模擬三臺(tái)主機(jī):

  • 第一步:將redis.conf 拷貝三份,名字分別是,redis6379.conf,redis6380.conf,redis6381.conf
  • 第二步:修改三個(gè)文件的port端口,pid文件名,日志文件名,rdb文件名

如:

port 6379
pidfile /var/run/redis_6379.pid
logfile “6379.log”
dbfilename dump6379.rdb
  • 第三步:分別打開三個(gè)窗口模擬三臺(tái)服務(wù)器,開啟redis服務(wù)。

2、查詢主從信息:info replication

3、寫操作6379:

4、設(shè)置主從關(guān)系:

在6380和6381主機(jī)上分別執(zhí)行命令:slaveof 127.0.0.1 6379

另一種方式,就是修改6380和6381的配置文件,在最后加上:

注意:如果主redis設(shè)置了密碼,從庫(kù)的redis.conf中還需要設(shè)置masterauth為主redis的密碼。

5、全量復(fù)制:在6380和6381分別執(zhí)行命令get k1

6、增量復(fù)制:6379執(zhí)行命令:set k2 v2。然后6380端口和6381端口,分別執(zhí)行命令:get k2

7、主寫從讀、讀寫分離:在6380和6381上執(zhí)行寫操作set k3 v3

8、主機(jī)宕機(jī):6379執(zhí)行指令shutdown,并查看6380和6381的redis信息 從機(jī)原地待命。

9、主機(jī)宕機(jī)后恢復(fù):重啟6379,并且執(zhí)行寫命令set k4 v4;6380和6381上分別執(zhí)行g(shù)et k4 主機(jī)重啟后,一切正常。

10、從機(jī)宕機(jī):6380執(zhí)行指令shutdown,并查看6379和6381的redis信息

11、從機(jī)宕機(jī)后恢復(fù):重啟6380,并查看6380、6379和6381的redis信息

注意:從機(jī)跟master斷開聯(lián)系,必須重新連接,除非寫進(jìn)配置文件。

12、從機(jī)恢復(fù)連主機(jī)前,主機(jī)寫操作:6379執(zhí)行寫命令set k5 v5,6380和6381分別執(zhí)行命令get k5

13、從機(jī)恢復(fù)連接主機(jī),6380執(zhí)行命令:slaveof 127.0.0.1 6379,并且執(zhí)行命令:get k5

14、從機(jī)上位:

  • 第一步:主機(jī)宕機(jī),6379執(zhí)行命令:shutdown
  • 第二步:6380斷開主從關(guān)系,執(zhí)行命令:SLAVEOF no one
  • 第三步:重新搭建主從,6381執(zhí)行命令:info replication,SLAVEOF 127.0.0.1 6380
  • 第四步:之前主機(jī)恢復(fù),重啟6379的Redis服務(wù),并執(zhí)行命令:info replication

在6379主機(jī)宕機(jī)后,6380從機(jī)斷開主從關(guān)系,6381開始還在原地待命;后來(lái)6380從機(jī)上位,6381投靠6380,6379主機(jī)即使回來(lái)但它已是孤寡老人,空頭司令。

15、天堂變地獄:6379執(zhí)行命令saveof 127.0.0.1 6381,并在6379和6381執(zhí)行info replication

一臺(tái)主機(jī)配多臺(tái)從機(jī),一臺(tái)從機(jī)再配多臺(tái)從機(jī),從而實(shí)現(xiàn)了龐大的集群架構(gòu)。同時(shí)也減輕了一臺(tái)主機(jī)的壓力,缺點(diǎn)是增加了服務(wù)器間的延遲。

復(fù)制原理

全量復(fù)制

slave啟動(dòng)成功連接到master后會(huì)發(fā)送一個(gè)sync命令;Master接到命令啟動(dòng)后臺(tái)的存盤進(jìn)程,同時(shí)收集所有接收到的用于修改數(shù)據(jù)集命令,在后臺(tái)進(jìn)程執(zhí)行完畢之后,master將傳送整個(gè)數(shù)據(jù)文件到slave,以完成一次完全同步;slave服務(wù)在接收到數(shù)據(jù)庫(kù)文件數(shù)據(jù)后,將其存盤并加載到內(nèi)存中。

只要是重新連接master,一次完全同步(全量復(fù)制)將被自動(dòng)執(zhí)行。

增量復(fù)制

Master將新的所有收集到的修改命令依次傳給slave,完成同步。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • redis保存session信息的示例代碼

    redis保存session信息的示例代碼

    本文實(shí)現(xiàn)一個(gè)將session信息保存在 redis中,多個(gè)tomcat中的工程都從redis獲取session信息的示例,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-01-01
  • Redis3.2.6配置文件詳細(xì)中文說(shuō)明

    Redis3.2.6配置文件詳細(xì)中文說(shuō)明

    本文為大家分享了Redis3.2.6配置文件詳細(xì)中文說(shuō)明,非常詳細(xì)收藏起來(lái)以后工作有用
    2018-10-10
  • redis分布式鎖及會(huì)出現(xiàn)的問(wèn)題解決

    redis分布式鎖及會(huì)出現(xiàn)的問(wèn)題解決

    這篇文章主要給大家介紹了關(guān)于redis分布式鎖及會(huì)出現(xiàn)問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Redis數(shù)據(jù)備份與恢復(fù)方式的五種方式

    Redis數(shù)據(jù)備份與恢復(fù)方式的五種方式

    本文主要介紹了Redis數(shù)據(jù)備份與恢復(fù)方式,包含了五種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • redis用list做消息隊(duì)列的實(shí)現(xiàn)示例

    redis用list做消息隊(duì)列的實(shí)現(xiàn)示例

    本文主要介紹了redis用list做消息隊(duì)列的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 深入理解Redis哈希槽

    深入理解Redis哈希槽

    Redis哈希槽是RedisCluster中實(shí)現(xiàn)數(shù)據(jù)分片和負(fù)載均衡的核心機(jī)制,本文就來(lái)介紹一下Redis哈希槽,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • redis重新創(chuàng)建集群的實(shí)現(xiàn)步驟

    redis重新創(chuàng)建集群的實(shí)現(xiàn)步驟

    本文主要介紹了redis重新創(chuàng)建集群的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-05-05
  • redis requires ruby version2.2.2的解決方案

    redis requires ruby version2.2.2的解決方案

    本文主要介紹了redis requires ruby version2.2.2的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Redis哨兵模式實(shí)現(xiàn)一主二從三哨兵

    Redis哨兵模式實(shí)現(xiàn)一主二從三哨兵

    本文主要介紹了Redis哨兵模式實(shí)現(xiàn)一主二從三哨兵,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Redis過(guò)期數(shù)據(jù)清理的策略實(shí)戰(zhàn)

    Redis過(guò)期數(shù)據(jù)清理的策略實(shí)戰(zhàn)

    Redis中的過(guò)期鍵過(guò)期后不會(huì)立即從內(nèi)存中刪除,而是在后臺(tái)進(jìn)程中異步清理,如果不清理過(guò)期數(shù)據(jù),Redis內(nèi)存中的數(shù)據(jù)會(huì)越來(lái)越多,在實(shí)際應(yīng)用中,Redis 的過(guò)期數(shù)據(jù)淘汰策略可以通過(guò)多種方式實(shí)現(xiàn),以下是基于惰性刪除和定期刪除兩種機(jī)制的示例代碼以及最佳實(shí)踐
    2025-08-08

最新評(píng)論

吴忠市| 夏河县| 霍邱县| 安图县| 清苑县| 来安县| 武安市| 阿拉善左旗| 丰都县| 三原县| 西乌珠穆沁旗| 姚安县| 临邑县| 高碑店市| 大丰市| 吉木乃县| 稻城县| 札达县| 玉林市| 治多县| 崇礼县| 临城县| 工布江达县| 黔江区| 浦城县| 肃北| 息烽县| 黔江区| 平泉县| 河西区| 江安县| 韩城市| 德化县| 江孜县| 建阳市| 遂平县| 马关县| 吉水县| 凤台县| 山西省| 榆树市|