推薦學習: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中文網其他相關文章!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

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

Dreamweaver Mac版
視覺化網頁開發工具

禪工作室 13.0.1
強大的PHP整合開發環境