搜尋
首頁資料庫Redis總結分享之Redis三種集群模式

推薦學習:Redis影片教學

#三種叢集模式

  • redis有三種集群模式,其中主從是最常見的模式。
  • Sentinel 哨兵模式是為了彌補主從複製叢集中主機宕機後,主備切換的複雜性而演變出來的。哨兵顧名思義,就是用來監控的,主要作用就是監控主從集群,自動切換主備,完成集群故障轉移。
  • cluster 模式是redis官方提供的叢集模式,使用了Sharding 技術,不僅實現了高可用、讀寫分離、也實現了真正的分散式儲存。

一、主從複製

redis主從複製

1、reids主從模式

2、redis複製原理

redis 的複製分為兩部分操作同步(SYNC)和命令傳播(command propagate)

  • 同步(SYNC)用來將從伺服器的狀態更新到和主伺服器一致。白話文解釋就是從​​伺服器主動取得 主伺服器的資料。保持數據一致。具體實作是,主伺服器收到SYNC指令後,產生RDB快照文件,然後傳送給從伺服器。
  • 指令傳播 (command propagate)用於在主伺服器資料被修改後,主從不一致,為了讓從伺服器保持和主伺服器狀態一致,而做的命令傳播。白話文解釋就是主伺服器收到客戶端修改資料指令後,資料庫資料會發生變化,同時將指令快取起來,然後將快取指令傳送到從伺服器,從伺服器透過載入快取指令來達到主從資料一致。這就是所謂的命令傳播。
  • 為什麼需要有同步和命令傳播的兩種複製操作: 當只有同步操作時候,那麼在從伺服器向主伺服器發送SYNC命令時候,主伺服器在生成RDB快照檔案時候,仍然會收到客戶端的命令修改資料狀態,這部分資料如果無法傳達給從伺服器,那麼就會出現主從資料不一致的現象。這時候就出現了命令傳播,主伺服器收到從伺服器的SYNC命令後,生成RDB快照檔案同時,將此段時間內收到的命令快取起來,然後使用命令傳播的操作發送從伺服器。來達到主從數據一致。

3、redis主從複製原理

#上面介紹了redis複製的兩種操作,而redis得主則從複製正式基於同步和命令傳播來實現得。下面兩張圖展示了redis複製的流程:

4、redis主從複製優缺點

優點:

1、實作讀寫分離,提高了可用性,解決了單機故障2、主從複製期間master和slave都是非阻塞方式,仍然可用。

缺點:

1、master宕機期間,需要手動切換主機,同時會有部分資料無法及時同步從伺服器,造成資料不一致(需要手動手動介入)

2、slave宕機後,多個slave恢復後,大量的SYNC同步會造成master IO壓力倍增(可以手動規避啟動時間)

3、線上擴容較複雜。

總結:

redis主從複製的優點主要是提高了可用性缺點

二、Sentinel 哨兵模式

Sentinel 哨兵Sentinel 哨兵介紹

Sentinel 哨兵本質上是一個運行在特殊模式下的Redis實例,只是初始化的過程和工作與普通的Redis不同,本質上也是一個單獨的進程。

Sentinel 哨兵是Redis的高可用解決方案:一個或多個Sentinel實例(instance)組成的Sentinel系統(system)可以監視任意多個主伺服器,以及這些主伺服器屬下的所有從伺服器,並在主伺服器下線時可自動切換從伺服器升級為主伺服器。

1、Sentinel系統

下圖是一個簡單的Sentinel系統架構圖,一個Sentinel系統監視一個主從集群,其中server1是Redis主伺服器,server2 /3/4是Redis 從伺服器。主從之間利用上面的主從複製來達到主從一致。而Sentinel系統監視整個主從集群。

2、Sentinel故障轉移

當Sentinel系統察覺到Server1主機伺服器離線時,就會終止server2/3 /4的複製。

同時Sentinel將server2升級為主伺服器,server3/4從新的主伺服器複製。同時等待server1的再次上線。

Sentinel系統也可以主動降級主服務為從伺服器,將從伺服器升級為主伺服器。

2.1、Sentinel 哨兵監控過程

Sentinel 哨兵監控叢集過程:

  • #指令Sentinel哨兵透過發送指令,讓redis伺服器回傳運作狀態。發布訂閱 當主伺服器狀態變更時,Sentinel哨兵透過
  • 發布訂閱模式通知其他從伺服器。

2.2、Sentinel 哨兵故障轉移

Sentinel 故障轉移:

  • 1、Sentinel系統中的Sentinel實例每隔1s就像集群發送PING命令
  • 2、如果集群中有實例的回應Sentinel實例時間超過了down-after-milliseconds,那麼這個實例就會發送PING命令的Sentinel實例被主觀下線
  • 3、那麼什麼時候會客觀下線呢?需要Sentinel系統中其他實例也確認叢集中該實例主管下線。
  • 如果master主伺服器被標記為主觀下線,則Sentinel系統中監視master的Sentinel進程需要以每秒一次的頻率確認Master是否進入主管下線狀態
  • 4、當有足夠的Sentinel實例(取決於設定)確認Master進入了主管下線,則Master會被標記為客觀下線。

3、Sentinel 哨兵優缺點

優點:

1.哨兵模式基於主從複製,因此主從複製的優點哨兵都具備2、哨兵具備了主從切換和故障轉移,因此集群有了更高的可用性

缺點:

1、Redis較難支援線上擴容,線上擴容較複雜。

總結:
sentinel 哨兵主要用來監控redis主從集群,提高了redis 主從集群的可用性。

三、cluster 模式

redis cluster

#1、reids cluster

Redis Cluster是一種伺服器Sharding技術,redis 3.0版本開始正式提供。
Sentinel基本上已經實現了高可用,但是每台機器都儲存相同內容,很浪費內存,所以Redis Cluster實現了分散式儲存。每台機器節點上儲存不同的內容。

2、Redis Cluster 資料分片原理

redis 資料分片使用的是hash slot, redis集群有16384個哈希槽,每個Key透過CRC16校驗後對16384取模來決定放置哪一個槽。
當訪問redis key時候,redis會根據CRC16演算法得到一個結果,然後把結果和16384求餘,透過這個值去對應節點取得資料。
這個時候,應用程式客戶端其實只需要連接其中任何一個節點即可,然後Redis Cluster 中每個節點都保存了其他節點得槽資訊。這樣當存取key計算完槽之後,透過儲存槽資訊從配置中取得節點信息,然後再去對應節點獲取資料。

3、Redis Cluster 複製原理

redis-cluster叢集引入了主從複製模型,一個主節點對應一個或多個從節點,當主節點宕機的時候,就會啟用從節點。當其它主節點 ping 一個主節點 A 時,如果半數以上的主節點與 A 通訊逾時,那麼就認為主節點 A 宕機了。如果主節點 A 和它的從節點 A1 都宕機了,那麼該叢集就無法再提供服務了

推薦學習:Redis影片教學

#

以上是總結分享之Redis三種集群模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:脚本之家。如有侵權,請聯絡admin@php.cn刪除
REDIS:超越SQL- NOSQL的觀點REDIS:超越SQL- NOSQL的觀點May 08, 2025 am 12:25 AM

Redis超越SQL數據庫的原因在於其高性能和靈活性。 1)Redis通過內存存儲實現極快的讀寫速度。 2)它支持多種數據結構,如列表和集合,適用於復雜數據處理。 3)單線程模型簡化開發,但高並發時可能成瓶頸。

REDIS:與傳統數據庫服務器的比較REDIS:與傳統數據庫服務器的比較May 07, 2025 am 12:09 AM

Redis在高並發和低延遲場景下優於傳統數據庫,但不適合複雜查詢和事務處理。 1.Redis使用內存存儲,讀寫速度快,適合高並發和低延遲需求。 2.傳統數據庫基於磁盤,支持複雜查詢和事務處理,數據一致性和持久性強。 3.Redis適用於作為傳統數據庫的補充或替代,但需根據具體業務需求選擇。

REDIS:功能強大的內存數據存儲的簡介REDIS:功能強大的內存數據存儲的簡介May 06, 2025 am 12:08 AM

Redisisahigh-performancein-memorydatastructurestorethatexcelsinspeedandversatility.1)Itsupportsvariousdatastructureslikestrings,lists,andsets.2)Redisisanin-memorydatabasewithpersistenceoptions,ensuringfastperformanceanddatasafety.3)Itoffersatomicoper

Redis主要是數據庫嗎?Redis主要是數據庫嗎?May 05, 2025 am 12:07 AM

Redis主要是一個數據庫,但它不僅僅是數據庫。 1.作為數據庫,Redis支持持久化,適合高性能需求。 2.作為緩存,Redis提升應用響應速度。 3.作為消息代理,Redis支持發布-訂閱模式,適用於實時通信。

REDIS:數據庫,服務器還是其他?REDIS:數據庫,服務器還是其他?May 04, 2025 am 12:08 AM

redisisamultifaceTedToolThatServesAsAdatabase,server和more.itfunctionsasanin-memorydatastrustore,supportsvariousDataStructures,and CanbeusedAsacache,MessageBroker,sessionStorage,sessionStorage,sessionstorage,andford forderibedibedlocking。

REDIS:揭示其目的和關鍵應用程序REDIS:揭示其目的和關鍵應用程序May 03, 2025 am 12:11 AM

Redisisanopen-Source,內存內部的庫雷斯塔氏菌,卡赫和梅斯吉級,excellingInsPeedAndVersatory.itiswidelysusedforcaching,Real-Timeanalytics,Session Management,Session Managements,and sessighterboarderboarderboardobboardotoitsssupportfortfortfortfortfortfortfortfortorvortfortfortfortfortfortforvortfortforvortforvortforvortfortforvortforvortforvortforvortdatastherctuct anddatataCcessandcessanddataaCces

REDIS:鍵值數據存儲的指南REDIS:鍵值數據存儲的指南May 02, 2025 am 12:10 AM

Redis是一個開源的內存數據結構存儲,用作數據庫、緩存和消息代理,適合需要快速響應和高並發的場景。 1.Redis使用內存存儲數據,提供微秒級的讀寫速度。 2.它支持多種數據結構,如字符串、列表、集合等。 3.Redis通過RDB和AOF機制實現數據持久化。 4.使用單線程模型和多路復用技術高效處理請求。 5.性能優化策略包括LRU算法和集群模式。

REDIS:緩存,會話管理等REDIS:緩存,會話管理等May 01, 2025 am 12:03 AM

Redis的功能主要包括緩存、會話管理和其他功能:1)緩存功能通過內存存儲數據,提高讀取速度,適用於電商網站等高頻訪問場景;2)會話管理功能在分佈式系統中共享會話數據,並通過過期時間機制自動清理;3)其他功能如發布-訂閱模式、分佈式鎖和計數器,適用於實時消息推送和多線程系統等場景。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境