Redis(45)哨兵模式與集群模式有何區別?

Redis 提供了兩種高可用性解決方案:哨兵模式和集群模式。它們各自有不同的特點和適用場景。以下是詳細的對比和結合代碼的示例:

哨兵模式(Sentinel)

特點
  1. 高可用性

    • Sentinel 通過監控、通知、故障轉移等功能,保證 Redis 服務的高可用性。
  2. 主從復制

    • 使用主從復制實現數據冗余和讀寫分離。
  3. 自動故障轉移

    • 當主節點發生故障時,Sentinel 會自動將一個從節點提升為新的主節點。
  4. 客戶端連接

    • 客戶端通過 Sentinel 獲取當前主節點的信息以確保連接到正確的節點。
示例

配置主從架構和 Sentinel:

主節點配置(master.conf)

port 6379
bind 127.0.0.1
dir /var/lib/redis
appendonly yes

從節點配置(slave.conf)

port 6380
bind 127.0.0.1
dir /var/lib/redis
appendonly yes
slaveof 127.0.0.1 6379

Sentinel 配置(sentinel.conf)

port 26379
dir /tmp
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 60000

啟動 Sentinel:

redis-sentinel sentinel.conf

Java 代碼示例

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisSentinelPool;import java.util.HashSet;
import java.util.Set;public class RedisSentinelExample {private static final String MASTER_NAME = "mymaster";public static void main(String[] args) {Set<String> sentinels = new HashSet<>();sentinels.add("127.0.0.1:26379");try (JedisSentinelPool sentinelPool = new JedisSentinelPool(MASTER_NAME, sentinels);Jedis jedis = sentinelPool.getResource()) {jedis.set("mykey", "myvalue");String value = jedis.get("mykey");System.out.println("mykey: " + value);System.out.println("Connected to master: " + jedis.getClient().getHost() + ":" + jedis.getClient().getPort());}}
}

集群模式(Cluster)

特點
  1. 數據分片

    • Redis 集群將數據分片存儲在不同的節點上,每個節點存儲整個數據集的一部分。
  2. 高可用性

    • Redis 集群通過復制和分區來實現高可用性和數據的高可靠性。
  3. 自動故障轉移

    • 集群模式內建自動故障轉移機制,發生故障時可以自動選擇新的主節點。
  4. 水平擴展

    • 可以通過增加節點來擴展集群的存儲容量和處理能力。
示例

配置 Redis 集群:

節點配置(node1.conf, node2.conf, …, node6.conf)

port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes

啟動每個節點:

redis-server node1.conf
redis-server node2.conf
redis-server node3.conf
redis-server node4.conf
redis-server node5.conf
redis-server node6.conf

創建集群:

redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

Java 代碼示例

import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.HostAndPort;import java.util.HashSet;
import java.util.Set;public class RedisClusterExample {public static void main(String[] args) {Set<HostAndPort> clusterNodes = new HashSet<>();clusterNodes.add(new HostAndPort("127.0.0.1", 7000));clusterNodes.add(new HostAndPort("127.0.0.1", 7001));clusterNodes.add(new HostAndPort("127.0.0.1", 7002));clusterNodes.add(new HostAndPort("127.0.0.1", 7003));clusterNodes.add(new HostAndPort("127.0.0.1", 7004));clusterNodes.add(new HostAndPort("127.0.0.1", 7005));try (JedisCluster jedisCluster = new JedisCluster(clusterNodes)) {jedisCluster.set("mykey", "myvalue");String value = jedisCluster.get("mykey");System.out.println("mykey: " + value);}}
}

對比總結

  1. 高可用性

    • 哨兵模式:通過 Sentinel 實現高可用性,適用于小規模集群。
    • 集群模式:內建高可用性,通過節點間的復制和自動故障轉移實現。
  2. 擴展性

    • 哨兵模式:擴展性有限,適用于少量節點的主從架構。
    • 集群模式:支持水平擴展,適用于大規模數據集和高并發場景。
  3. 數據分片

    • 哨兵模式:不支持數據分片,所有數據存儲在主節點及其復制的從節點上。
    • 集群模式:支持數據分片,每個節點存儲部分數據,通過哈希槽分配數據。
  4. 客戶端連接

    • 哨兵模式:客戶端通過 Sentinel 獲取主節點信息,連接到正確的主節點。
    • 集群模式:客戶端直接連接到集群節點,自動處理數據分片和故障轉移。

根據具體需求選擇合適的模式。如果需要高可用性和簡單的主從復制,可以選擇哨兵模式;如果需要更高的擴展性和數據分片,則選擇集群模式。

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

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

相關文章

微信小程序如何進行分包處理?

目錄 分包是什么&#xff1f; 為什么要分包&#xff1f; 分包前后結構對比 具體操作步驟 第 1 步&#xff1a;規劃分包結構 第 2 步&#xff1a;修改 app.json 進行配置 第 3 步&#xff1a;創建分包目錄并移動文件 第 4 步&#xff1a;處理組件和工具函數的引用 第 5…

Go語言極速入門與精要指南從零到精通的系統化學習路徑

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 持續學習&#xff0c;不斷…

git 切換倉庫后清理分支緩存

我明白了&#xff0c;從您的截圖可以看到遠程倉庫中有 feature/v1.4_20250903 分支&#xff0c;但本地 git branch -r 看不到&#xff0c;這是因為之前更換過倉庫地址后需要重新獲取遠程倉庫的所有信息。讓我們執行以下步驟來解決這個問題&#xff1a; 首先執行 git fetch --al…

考研倒計時101天---路由選擇協議

路由選擇協議&#xff1a;RIP 與 OSPFRIP 協議&#xff08;基于距離向量算法&#xff09;RIP&#xff08;Routing Information Protocol&#xff09;是一種內部網關協議&#xff08;IGP&#xff09;&#xff0c;采用距離向量算法進行路由選擇。其主要特點如下&#xff1a;工作機…

「類 vs 實例」對比 ,「類 - 原型 - 實例」的關系

堅持的本身就是意義 目錄直觀類比類 (Class) vs 實例 (Instance)對比表示例代碼類 - 原型 - 實例關系圖解釋&#xff1a;類 (class Person)原型 (Person.prototype)實例 (new Person(...))總結&#xff1a;直觀類比 類&#xff08;Class&#xff09; 圖紙 / 模板實例&#xf…

第一課、Cocos Creator 3.8 安裝與配置

介紹說明 本文主要介紹在windows系統中&#xff0c;安裝開發Cocos使用的軟件工具&#xff0c;主要包含&#xff1a;安裝CocosDashboard控制面板、CocosCreator3.8編輯器和腳本編輯器 VS Code 。 一、Cocos Dashboard 的安裝 說明&#xff1a;Cocos Dashboard 主要作用是能夠同…

從航空FACE的一個落地方案漫談汽車HPC軟件架構的思維轉變(2/3)FACE的“段”同Autosar的“層”概念區別探索

文章目錄PART THREE&#xff1a;段和層的概念比較一、“段”更強調“功能閉環責任歸屬”&#xff0c;而非“單純的層級堆疊”二、“段”規避“層”的“剛性依賴陷阱”&#xff0c;適配航空系統的“靈活組合需求”三、“段”貼合航空工業的“工程化語言習慣”&#xff0c;降低跨…

金融量化指標--6InformationRatio信息比率

InformationRatio信息比率計算公式添加圖片注釋&#xff0c;不超過 140 字&#xff08;可選&#xff09;一、信息比率&#xff08;IR&#xff09;是什么&#xff1f;核心概念&#xff1a;信息比率衡量的是投資組合經理相對于某個基準指數&#xff08;Benchmark&#xff09;&…

Java全棧開發面試實錄:從基礎到微服務的實戰經驗分享

Java全棧開發面試實錄&#xff1a;從基礎到微服務的實戰經驗分享 一、初識面試場景 我叫李明&#xff0c;28歲&#xff0c;畢業于復旦大學計算機科學與技術專業&#xff0c;碩士學歷。在互聯網行業已經有5年的工作經驗&#xff0c;先后在兩家中型互聯網公司擔任Java全棧開發工程…

【51單片機】【protues仿真】基于51單片機公交報站系統

目錄 一、主要功能 二、使用步驟 三、硬件資源 四、軟件設計 五、實驗現象 一、主要功能 主要功能如下&#xff1a; 1、LCD12864顯示時間、日期、公交車車站、溫度等 2、按鍵設置時間&#xff0c;顯示公交車信息 3、串口播報相應站點信息 4、按鍵控制上行、下行、手動播…

第1節-PostgreSQL入門-從表中查詢數據

摘要&#xff1a;在本教程中,你將學習如何使用 PostgreSQL 的 SELECT 語句從表中檢索數據。 SELECT 語句 要從表中查詢數據,需使用 PostgreSQL 的 SELECT 語句。 以下是 SELECT 語句的基本語法: SELECT column1, column2, ... FROM table_name;在這種語法中: 首先,在 SELECT 關…

【C++進階】---- map和set的使用

1.序列式容器和關聯式容器 前?我們已經接觸過STL中的部分容器如&#xff1a;string、vector、list、deque、array、forward_list等&#xff0c;這些容器統稱為序列式容器&#xff0c;因為邏輯結構為線性序列的數據結構&#xff0c;兩個位置存儲的值之間?般沒有緊密的關聯關系…

430章:Python Web爬蟲入門:使用Requests和BeautifulSoup

在軟件交付日益高頻、用戶需求快速迭代的今天&#xff0c;版本發布流程的規范性直接決定了團隊的交付效率、產品質量和用戶滿意度。然而&#xff0c;許多團隊仍面臨以下痛點&#xff1a;發布混亂&#xff1a;分支管理隨意&#xff0c;代碼沖突頻發&#xff1b;質量失控&#xf…

代碼隨想錄第七天|● 454.四數相加II ● 383. 贖金信 ● 15. 三數之和 18.四數之和

本文所有題目鏈接/文章講解/視頻講解&#xff1a;https://programmercarl.com/0454.%E5%9B%9B%E6%95%B0%E7%9B%B8%E5%8A%A0II.html 454.四數相加II 有四個數組&#xff0c;如果要遍歷則時間復雜度太大 可以選擇分組&#xff0c;a和b一組&#xff0c;c和d一組 這樣就可以等同于…

Vue3源碼reactivity響應式篇之computed計算屬性

概述 vue3中&#xff0c;computed函數用于表示計算屬性&#xff0c;有惰性求值、響應式追蹤依賴的特點。本文將介紹computed的實現原理以及其機制細節。 源碼解析 computed計算屬性和computed方法、ComputedRefImpl類以及refreshComputed方法有關。 computed方法 computed暴露給…

[嵌入式embed]Keil5燒錄后STM32不自動運行,復位才能運行

[嵌入式embed]Keil5燒錄后STM32不自動運行,復位才能運行Keil5-驗證“Reset and Run”功能是否生效參考文章Keil5-驗證“Reset and Run”功能是否生效 參考文章 Keil5燒錄后STM32不自動運行&#xff1f;必須復位才能啟動的終極解決方案

阿里云Qwen3系列模型部署微調評測

與阿里云一起輕松實現數智化讓算力成為公共服務&#xff1a;用大規模的通用計算&#xff0c;幫助客戶做從前不能做的事情&#xff0c;做從前做不到的規模。讓數據成為生產資料&#xff1a;用數據的實時在線&#xff0c;幫助客戶以數據為中心改變生產生活方式創造新的價值。模型…

北京魯成偉業 | 三屏加固筆記本電腦C156F3

在工業控制、應急指揮、測控及無人機作業等對設備穩定性與環境適應性要求較高的領域&#xff0c;一款性能均衡且堅固耐用的計算機往往能為工作效率提供有力支撐。三屏加固筆記本電腦C156F3便是針對這類需求設計的設備&#xff0c;憑借多方面的特性&#xff0c;可滿足不同場景下…

七彩氛圍燈芯片EH3A01RGB驅動芯片定時開關IC方案

?在現代智能家居和個性化照明領域&#xff0c;EH3A01-442A-A24F小夜燈定時芯片憑借其多功能、低功耗和靈活配置的特點&#xff0c;成為LED氛圍燈、小夜燈及便攜式照明方案的理想選擇。本文將深入解析該芯片的核心功能、電氣特性及應用場景&#xff0c;幫助開發者與用戶全面掌握…

Spring Boot 項目新增 Module 完整指南

1. 模塊化開發的重要性 在軟件開發中&#xff0c;隨著項目規模的不斷擴大&#xff0c;??模塊化設計??已成為提高代碼可維護性和可復用性的關鍵實踐。通過將大型項目拆分為多個獨立模塊&#xff0c;開發團隊可以??并行開發??不同功能組件&#xff0c;降低代碼耦合度&…