目錄
#三種叢集模式
一、主從複製
1、reids主從模式
4、redis主從複製優缺點
二、Sentinel 哨兵模式
1、Sentinel系統
三、cluster 模式
首頁 資料庫 Redis 總結分享之Redis三種集群模式

總結分享之Redis三種集群模式

Aug 31, 2022 pm 05:54 PM
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

熱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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1323
25
PHP教程
1272
29
C# 教程
1251
24
redis集群模式怎麼搭建 redis集群模式怎麼搭建 Apr 10, 2025 pm 10:15 PM

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

redis數據怎麼清空 redis數據怎麼清空 Apr 10, 2025 pm 10:06 PM

如何清空 Redis 數據:使用 FLUSHALL 命令清除所有鍵值。使用 FLUSHDB 命令清除當前選定數據庫的鍵值。使用 SELECT 切換數據庫,再使用 FLUSHDB 清除多個數據庫。使用 DEL 命令刪除特定鍵。使用 redis-cli 工具清空數據。

redis怎麼讀取隊列 redis怎麼讀取隊列 Apr 10, 2025 pm 10:12 PM

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

centos redis如何配置Lua腳本執行時間 centos redis如何配置Lua腳本執行時間 Apr 14, 2025 pm 02:12 PM

在CentOS系統上,您可以通過修改Redis配置文件或使用Redis命令來限制Lua腳本的執行時間,從而防止惡意腳本佔用過多資源。方法一:修改Redis配置文件定位Redis配置文件:Redis配置文件通常位於/etc/redis/redis.conf。編輯配置文件:使用文本編輯器(例如vi或nano)打開配置文件:sudovi/etc/redis/redis.conf設置Lua腳本執行時間限制:在配置文件中添加或修改以下行,設置Lua腳本的最大執行時間(單位:毫秒)

redis命令行怎麼用 redis命令行怎麼用 Apr 10, 2025 pm 10:18 PM

使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

redis計數器怎麼實現 redis計數器怎麼實現 Apr 10, 2025 pm 10:21 PM

Redis計數器是一種使用Redis鍵值對存儲來實現計數操作的機制,包含以下步驟:創建計數器鍵、增加計數、減少計數、重置計數和獲取計數。 Redis計數器的優勢包括速度快、高並發、持久性和簡單易用。它可用於用戶訪問計數、實時指標跟踪、遊戲分數和排名以及訂單處理計數等場景。

redis過期策略怎麼設置 redis過期策略怎麼設置 Apr 10, 2025 pm 10:03 PM

Redis數據過期策略有兩種:定期刪除:定期掃描刪除過期鍵,可通過 expired-time-cap-remove-count、expired-time-cap-remove-delay 參數設置。惰性刪除:僅在讀取或寫入鍵時檢查刪除過期鍵,可通過 lazyfree-lazy-eviction、lazyfree-lazy-expire、lazyfree-lazy-user-del 參數設置。

如何優化debian readdir的性能 如何優化debian readdir的性能 Apr 13, 2025 am 08:48 AM

在Debian系統中,readdir系統調用用於讀取目錄內容。如果其性能表現不佳,可嘗試以下優化策略:精簡目錄文件數量:盡可能將大型目錄拆分成多個小型目錄,降低每次readdir調用處理的項目數量。啟用目錄內容緩存:構建緩存機制,定期或在目錄內容變更時更新緩存,減少對readdir的頻繁調用。內存緩存(如Memcached或Redis)或本地緩存(如文件或數據庫)均可考慮。採用高效數據結構:如果自行實現目錄遍歷,選擇更高效的數據結構(例如哈希表而非線性搜索)存儲和訪問目錄信

See all articles