Redis 八股文

標題

  • 1. Redis主從同步原理:
    • 判斷下線的條件:
    • 故障轉移
    • 如何保證Sentinel高可用

1. Redis主從同步原理:

1、slave執行命令向master建立連接
2、master執行bgsave(后臺存儲),生成rdb快照(redis備份方式,data以二進制方式保存在本地),發送到slave上
3、slave獲取快照后讀取,對data還原,保證初始化數據一致
4、master接受命令發送到salve,salve執行保證后續數據一致

缺點:master掛掉,redis集群癱瘓。
在這里插入圖片描述

引出高可用,sentinel(哨兵模式)

1、建立sentinel集群,有一個leader角色
2、一般需要6個節點,3個sentinel,1主2從
3、sentinel安裝在節點上,根據配置信息監聽redis的健康狀態。
(每個sentinel 1次/秒頻率向master,salve及其他sentinel實例發送ping命令)

若master掛了,怎么辦?
先判斷是否真掛了:
主動下線(不靠譜,存在網絡問題誤判):實例最后一次有效回復時間超時
客觀下線:多個sentinel ping不通(多個=總數除以2+1)

在這里插入圖片描述
在這里插入圖片描述

判斷下線的條件:

1.剔除主觀下線、已斷線、或者最后一次回復PING命令的時
間大于五秒鐘的Slave
2.剔除與失效主服務器連接斷開的時長超過down-after選項
指定的時長十倍的Slave
3.按同步數據的偏移量選出數據最完整的Slave
4.如果偏稱量相同,選中ID最小的Slave

故障轉移

選出新的master后,開始故障轉移
1.向被選中的從服務器發送SLAVEOF NO ONE命令,讓它轉變為主服務器。
2.通過發布與訂閱功能,將更新后的配置傳播給所有其他Sentinel,其他Sentinel對它們自己的配置進行更新。
3.向所有Slave下達SLAVEOF命令,指向新的master
4. redis-slave向master重新建立連接,重放rdb保持數據同步
5.在上述轉移過程中,伴隨著Redis本地配置文件的自動重寫,這樣即使是實例重啟配置也不會丟失
6.原有的master在恢復后降級為slave與新master全量同步

如何保證Sentinel高可用

如果Sentinel掛了怎么辦?如何保證Sentinel高可用
1.sentinel自動故障遷移使用raft算法來選舉領頭(leader) sentinel
2.超過半數投票選出leader, sentinel Leader用于下達故障轉移的指令
3.如果某個Leader掛了,則使用Raft從剩余的Sentinel中選出leader
在這里插入圖片描述

事實上,在最開始的時候,sentinel節點是先和master建立連接,然后通過服務的注冊發現才知道其他sentinel節點的存在。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41714.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41714.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41714.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FreeRTOS中vTaskDelay 和 xTaskDelayUntil 的區別?

vTaskDelay 和 xTaskDelayUntil 是 FreeRTOS 提供的兩種不同任務延遲函數,各自有其適用的場景和優缺點。vTaskDelay 適用于簡單的延遲操作,而 xTaskDelayUntil 提供了精確的周期控制能力。在設計 FreeRTOS 應用程序時,根據任務的時間要求選擇…

日志自動分析-Web---360星圖GoaccessALBAnolog

目錄 1、Web-360星圖(IIS/Apache/Nginx) 2、Web-GoAccess (任何自定義日志格式字符串) 源碼及使用手冊 安裝goaccess 使用 輸出 3-Web-自寫腳本(任何自定義日志格式字符串) 4、Web-機器語言analog(任何自定義日…

游戲AI的創造思路-技術基礎-強化學習(1)

我們“強化”一下機器的“學習”,讓機器變得更強~~~~ 目錄 1. 強化學習的定義 2. 發展歷史 3. 強化學習的基本概念和函數 3.1. 基本概念和函數 3.1.1. 基本概念和函數 3.1.2. Q函數 3.1.2.1. 定義與作用 3.1.2.2. 數學表示 3.1.2.3. 更新規則 3.1.2.4. 算…

AI時代算法面試:揭秘高頻算法問題與解答策略

三種決策樹算法的特點和區別 ID3算法:基本的決策樹算法,適用于簡單的分類問題C4.5算法:改進了ID3算法,適用于更復雜的分類問題,可以處理連續型數據和缺失值CART算法:更加通用的決策樹算法,適用于…

云服務器在 Web 應用程序中作用

云服務器在Web應用程序中扮演著至關重要的角色,它不僅是現代Web應用程序的基石,還是推動業務發展和提升用戶體驗的關鍵技術之一。下面將詳細探討云服務器在Web應用程序中的重要作用及其優勢。 首先,云服務器為Web應用程序提供了高度可擴展的…

【postgresql】索引

見的索引類型: B-tree 索引:這是最常用的索引類型,適用于大多數查詢。B-tree索引可以高效地處理范圍查詢。 Hash 索引:適用于等值查詢,但不支持范圍查詢。 GiST 索引:通用搜索樹(GiST&#xf…

Flask自定義命令

Flask自定義命令 一、老版Flask自定義命令 Flask 1.x 和 2.x 版本 在Flask的老版本中,可以通過 flask-script 擴展來添加自定義命令。 安裝所需庫: pip3 install Flask-Script2.0.3 pip3 install flask1.1.4 pip3 install markupsafe1.1.1在 Flask 應…

懷念舊的Windows聲音?以下是如何在Windows 11中恢復它們

如果你渴望舊的Windows聲音,希望能在Windows 11上再次聽到,那你就很幸運了。我們將向你展示如何下載必要的聲音包并創建復古的聲音方案。 如何獲取舊Windows聲音的聲音包 你需要做的第一件事是下載一個包含舊Windows版本聲音的聲音包。此外,請確保它包含的每個聲音都是WAV…

在 Vue 項目中使用 FullCalendar

1、先安裝依賴包,根據自己的需求安裝,建議使用cnpm安裝,不然會很慢有時候會出現安裝不上的情況。 npm i fullcalendar/vue --save npm i fullcalendar/core --save // 在月視圖或日視圖中操作事件 npm i fullcalendar/daygrid --save // 在…

記錄discuz修改用戶的主題出售價格

大家好,我是網創有方的站長,今天遇到了需要修改discuz的主題出售價格。特此記錄下 方法很簡單: 進入用于組-》選擇論壇-》批量修改

【shell編程小項目】

目錄 一、項目拓撲二、要求三、shell編程 一、項目拓撲 二、要求 環境準備: 準備兩個虛擬機,按照環境配置好對應的 IP 地址和對應的主機名和 SSH 密鑰登錄在 workstation.exam.com 節點實現如下需求: 1、編寫 Shell 腳本,要求代碼…

0803實操-Windows Server系統管理

Windows Server系統管理 系統管理與基礎配置 查看系統信息、更改計算機名稱 網絡配置 啟用網絡發現 Windows啟用網絡發現是指在網絡設置中啟用一個功能,該功能允許您的計算機在網絡上識別和訪問其他設備和計算機。具體來說,啟用網絡發現后&#xff…

Qt5.9.9 關于界面拖動導致QModbusRTU(QModbusTCP沒有測試過)離線的問題

問題鎖定 參考網友的思路: Qt5.9 Modbus request timeout 0x5異常解決 網友認為是Qt的bug, 我也認同;網友認為可以更新模塊, 我也認同, 我也編譯了Qt5.15.0的code并成功安裝到Qt5.9.9中進行使用,界面拖…

Laravel文件存儲:云端數據管理的藝術

標題:Laravel文件存儲:云端數據管理的藝術 Laravel框架提供了一個強大的文件存儲抽象層,允許開發者以一致的方式與本地磁盤或云存儲服務(如Amazon S3)進行交互。文件存儲系統簡化了文件上傳、下載、移動和刪除等操作&…

Java面試之Java多線程常見面試題

1、什么是線程? 定義:線程是程序中的執行路徑,是操作系統進行調度的基本單位。它允許程序并發執行多個任務,提高程序的響應速度和資源利用率。 2、為什么需要線程? 1、提高并發性:線程允許程序同時執行多…

Mybatis原生使用

一、MyBatis初次使用 2.1 環境搭建步驟 MyBatis 的 API : https://mybatis.org/mybatis-3/zh/getting-started.html 1.引入依賴包 2.準備核心配置件 db.properties drivercom.mysql.cj.jdbc.Driver urljdbc:mysql://123.57.206.19:3306/demo?useUnicodetrue&am…

如何選擇最佳的照片和視頻恢復軟件

您是否意外從硬盤或 USB 卡中刪除了照片或視頻?最好的視頻和照片恢復軟件可以幫到您!如果您一直在尋找最好的照片恢復軟件,那么您來對地方了。本文將分享一些幫助您找到最佳視頻恢復軟件的提示。 重要提示:事實:媒體文…

知識圖譜嵌入

文章目錄 知識圖譜嵌入的概念知識圖譜嵌入的優點知識圖譜嵌入的主要方法知識圖譜嵌入的應用知識圖譜嵌入的概念 為了解決前面提到的知識圖譜表示的挑戰,在詞向量的啟發下,研究者考慮如何將知識圖譜中的實體和關系映射到連續的向量空間,并包含一些語義層面的信息,可以使得在…

【LabVIEW學習篇 - 3】:程序結構——順序結構、for循環、while循環

文章目錄 順序結構案例一案例二 for循環while循環 順序結構 LabVIEW中的順序結構是一種常用的控制結構,用于按順序執行程序的不同部分。順序結構在程序中按照從左到右的順序依次執行各個子結構,類似于傳統的文本編程語言中的順序執行。 案例一 案例一…

JAVA的線性表數據結構的超詳解

目錄 順序表的順序存儲結構 1.數組 2.順序表 順序表的聲明,存儲操作以及效率分析 1.泛型類 2.順序表的插入操作 3. 順序表的刪除操作 4.順序表查詢操作 5.順序表的應用 線性表的鏈式存儲結構 單鏈表的基本操作 順序表的順序存儲結構 數組是實現順序存儲…