欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

圖解Redis主從復制與Redis哨兵機制

 更新時間:2023年03月29日 16:30:55   作者:哪 吒  
這篇文章主要介紹了圖解Redis主從復制與Redis哨兵機制,今天分享一下Redis的持久化、事務(wù)、管道相關(guān)的知識點,需要的朋友可以參考下

前言

今天分享一下Redis的持久化、事務(wù)、管道相關(guān)的知識點,實現(xiàn)快速入門,豐富個人簡歷,提高面試level,給自己增加一點談資,秒變面試小達人,BAT不是夢。

在這里插入圖片描述

一、Redis復制是什么?

Redis復制就是主從復制,當主服務(wù)器數(shù)據(jù)發(fā)生變化時,自動將新的數(shù)據(jù)同步到從數(shù)據(jù)庫。

讀數(shù)據(jù)庫可以進行讀寫操作,從數(shù)據(jù)庫一般指用于讀操作。

Redis復制可以保證主數(shù)據(jù)庫崩潰時可以進行數(shù)據(jù)恢復。

二、Redis復制能干嘛?

  1. 讀寫分離
  2. 容災恢復
  3. 數(shù)據(jù)備份
  4. 水平擴容支撐高并發(fā)

三、Redis復制的缺點

1、復制延遲

由于所有的寫操作都發(fā)生在master數(shù)據(jù)庫,然后同步到slave數(shù)據(jù)庫中,所以會有一定的數(shù)據(jù)延遲,當系統(tǒng)負擔過重時,延遲越大,slave機器的增加也會增加數(shù)據(jù)延遲的時間。

2、master宕機

如果master宕機了,默認情況下不會將salve數(shù)據(jù)庫自動升級為master數(shù)據(jù)庫。

四、樂觀復制策略

Redis采用樂觀復制策略,容忍一段時間內(nèi)主從數(shù)據(jù)庫不一致,但保證最終一致性。這個策略保證了性能,在復制的時候,主數(shù)據(jù)庫不會阻塞,可以繼續(xù)提供服務(wù)。

五、Redis復制常用命令

1、info replication

查看節(jié)點的主從關(guān)系和配置信息。

2、replicaof 主庫Ip 主庫port

在從數(shù)據(jù)庫的redis.conf中配置。

3、slaveof 主庫IP 主庫port

在運行期間修改slave節(jié)點的信息,如果該數(shù)據(jù)庫已經(jīng)是其它主數(shù)據(jù)庫的從數(shù)據(jù)庫了,那么它會停止與其的主從關(guān)系,轉(zhuǎn)而成為新配置的主庫的從數(shù)據(jù)庫。

4、slaveof no one

使當前數(shù)據(jù)庫停止與其它數(shù)據(jù)庫的同步,升級為主數(shù)據(jù)庫。

六、Redis復制工作流程

1、slave啟動成功后,會連接master數(shù)據(jù)庫,發(fā)送一個sync命令,同步數(shù)據(jù);如果是第一次連接,則會進行一次全量復制,slave自身的數(shù)據(jù)會被master數(shù)據(jù)覆蓋清除;

2、master數(shù)據(jù)庫收到sync命令后,通過RDB開始保存快照,同時將所有接收到的用于修改數(shù)據(jù)庫的命令緩存起來,master數(shù)據(jù)庫執(zhí)行完RDB持久化后,master將RBD文件和所有緩存的命令發(fā)送到所有的slave數(shù)據(jù)庫,完成一次數(shù)據(jù)同步;

3、slave收到RDB文件和命令緩存后,將其加載到內(nèi)存中,從而完成復制初始化;

4、repl-ping-replica-period 10,表示master發(fā)出ping包的周期默認是10秒;

5、完成首次數(shù)據(jù)全量同步后,master繼續(xù)將新的收集到的修改命令定期傳給slave數(shù)據(jù)庫,完成數(shù)據(jù)同步;

6、如果從機重啟了,master的backlog中會記錄offset,master會將offset后面的數(shù)據(jù)復制給slave。

7187:C 14 Mar 22:14:24.106 # nzbc Redis is starting nzbc
7187:C 14 Mar 22:14:24.107 # Redis version=6.0.8, bits=64, commit=00000000, modified=0, pid=7187, just started
7187:C 14 Mar 22:14:24.108 # Configuration loaded
7188:S 14 Mar 22:14:24.110 * Increased maximum number of open files to 10032 (it was originally set to 256).
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 6.0.8 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6380
 |    `-._   `._    /     _.-'    |     PID: 7188
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

7188:S 14 Mar 22:14:24.120 # Server initialized
7188:S 14 Mar 22:14:24.114 * DB loaded from disk: 0.000 seconds
7188:S 14 Mar 22:14:24.122 * Before turning into a slave, using my master parameters to synthesize a cached master: I may be able to synchronize with the new master with just a partial transfer.
7188:S 14 Mar 22:14:24.122 * Ready to accept connections
7188:S 14 Mar 22:14:24.123 * Connecting to MASTER 127.0.0.1:6379
7188:S 14 Mar 22:14:24.123 * MASTER <-> SLAVE sync started
7188:S 14 Mar 22:14:24.123 * Non blocking connect for SYNC fired the event.
7188:S 14 Mar 22:14:24.124 * Master replied to PING, replication can continue...
7188:S 14 Mar 22:14:24.124 * Trying a partial resynchronization (request 9b3cs5w9g6x3004fa9a0999361035b71ecf70ab4:30783).
7188:S 14 Mar 22:14:24.130 * Full resync from master: cb4as85df693ad62f09ce4f486e0d43ec8f36334:0
7188:S 14 Mar 22:14:24.130 * Discarding previously cached master state.
7188:S 14 Mar 22:14:24.163 * MASTER <-> SLAVE sync: receiving 5484 bytes from master
7188:S 14 Mar 22:14:24.165 * MASTER <-> SLAVE sync: Flushing old data
7188:S 14 Mar 22:14:24.165 * MASTER <-> SLAVE sync: Loading DB in memory
7188:S 14 Mar 22:14:24.167 * MASTER <-> SLAVE sync: Finished with success

七、Redis哨兵是什么?

Redis提供了哨兵sentinel機制來監(jiān)控Redis的性能,如果主數(shù)據(jù)庫宕機了,根據(jù)投票數(shù)自動將某一個從數(shù)據(jù)庫提升為主數(shù)據(jù)庫,繼續(xù)對外提供服務(wù)。

1、Redis哨兵的作用

在這里插入圖片描述

  1. 主從監(jiān)控,監(jiān)控主從數(shù)據(jù)庫是否運行正常;
  2. 消息通知,哨兵可以將故障信息發(fā)送給客戶端;
  3. 故障轉(zhuǎn)移,如果master異常。哨兵會進行主備切換,將其中一個slave轉(zhuǎn)為master;
  4. 配置中心,客戶端通過連接哨兵獲取Redis服務(wù)集群的主節(jié)點信息;

2、使用哨兵的注意事項:

在這里插入圖片描述

八、實戰(zhàn)演練

1、搭建3個哨兵服務(wù)器

監(jiān)控Redis主從服務(wù)器,不存放數(shù)據(jù)。

在這里插入圖片描述

2、sentinel.conf參數(shù)選項說明

bind 0.0.0.0
daemonize yes
protected-mode no
port 6391
logfile "/myredis/sentinel1.log"
pidfile /var/run/redis-sentinel6391.pid
dir /myredis
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster 123456

在這里插入圖片描述

設(shè)置要監(jiān)控的master服務(wù)器,quorum表示至少有幾個哨兵認為客觀下線,同意故障轉(zhuǎn)移的法定票數(shù),因此哨兵服務(wù)器一般為奇數(shù)個。

sentinel monitor <master-name> 127.0.0.1 6379 <quorum>。

master服務(wù)器設(shè)置了密碼:

sentinel auth-pass <master-name> <password>

通過命令,完成哨兵sentinel的啟動,兩種方式,任選其一:

  1. redis-sentinel /path/to/sentinel.conf
  2. redis-server /path/to/sentinel.conf --sentinel

九、哨兵運行流程和選舉原理

當一個主從配置中的master失效后,sentinel會選舉出一個新的master用于接替原master的工作,其它slave服務(wù)器自動指向新master,實現(xiàn)數(shù)據(jù)同步。

1、主觀下線

指定多少毫秒之后,主節(jié)點沒有應答哨兵,此時哨兵會主觀上認為主節(jié)點已經(jīng)下線。

sentinel down-after-millisecnds <master-name> <millisecnds>

2、客觀下線

多個哨兵sentinel進行投票,根據(jù)投票結(jié)果才能確認一個master客觀上已經(jīng)宕機。

3、選舉master三步走:

(1)先選出一個master服務(wù)器

在這里插入圖片描述

當master數(shù)據(jù)庫宕機后,各個哨兵sentinel節(jié)點會進行協(xié)商,先通過Raft算法選舉出一個領(lǐng)導者哨兵節(jié)點,再由領(lǐng)導者進行master的選舉。

根據(jù)Redis.conf中,優(yōu)先級slave-priority或者replica-priority最高的從節(jié)點(數(shù)字越小優(yōu)先級越高)。復制偏移位置offset最大的從節(jié)點;最小Run ID的從節(jié)點

(2)其它slave服務(wù)器連接到master服務(wù)器

執(zhí)行slaveof no one命令會選舉出新的master,并通過slaveof命令將其它從節(jié)點成為新master服務(wù)器的從節(jié)點。

(3)如果舊master服務(wù)器恢復正常了,也要成為新master服務(wù)器的slave從服務(wù)器。

到此這篇關(guān)于圖解Redis主從復制與Redis哨兵機制的文章就介紹到這了,更多相關(guān)Redis主從復制與哨兵機制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis緩存更新策略詳解

    Redis緩存更新策略詳解

    這篇文章主要為大家詳細介紹了Redis緩存更新策略,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • redis執(zhí)行redis命令的方法教程

    redis執(zhí)行redis命令的方法教程

    這篇文章主要給大家介紹了在redis中執(zhí)行redis命令的方法教程,文中詳細介紹了關(guān)于Redis 命令及在遠程服務(wù)上執(zhí)行命令的方法,介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • Redis內(nèi)存回收策略

    Redis內(nèi)存回收策略

    這篇文章主要介紹了Redis內(nèi)存回收策略,需要的朋友可以參考下
    2007-02-02
  • Redis批量生成數(shù)據(jù)的實現(xiàn)

    Redis批量生成數(shù)據(jù)的實現(xiàn)

    本文主要介紹了Redis批量生成數(shù)據(jù)的實現(xiàn),主要介紹了兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Redis入門基礎(chǔ)常用操作命令整理

    Redis入門基礎(chǔ)常用操作命令整理

    這篇文章主要為大家介紹了Redis入門基礎(chǔ)常用操作命令的整理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Redis實現(xiàn)分布式鎖和等待序列的方法示例

    Redis實現(xiàn)分布式鎖和等待序列的方法示例

    這篇文章主要介紹了Redis實現(xiàn)分布式鎖和等待序列的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • Redis獲取某個大key值的腳本實例

    Redis獲取某個大key值的腳本實例

    這篇文章主要給大家分享介紹了關(guān)于Redis獲取某個大key值的一個腳本實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-04-04
  • Redis用GEO實現(xiàn)附近的人功能

    Redis用GEO實現(xiàn)附近的人功能

    GEO就是Geolocation的簡寫形式,代表地理坐標,這篇文章主要介紹了Redis用GEO實現(xiàn)附近的人功能,需要的朋友可以參考下
    2024-08-08
  • Redis擊穿穿透雪崩產(chǎn)生原因分析及解決思路面試

    Redis擊穿穿透雪崩產(chǎn)生原因分析及解決思路面試

    這篇文章主要為大家介紹了Redis擊穿穿透雪崩產(chǎn)生原因及解決思路的面試問題答案參考,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步
    2022-03-03
  • Redis高性能的原因及說明

    Redis高性能的原因及說明

    這篇文章主要介紹了Redis高性能的原因及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論