Redis集群實現方式

? 一、什么是 Redis 集群(Redis Cluster)

Redis 集群是 Redis 官方在 3.0 版本引入的分布式部署方案,它的目標是解決以下幾個問題:

  • 單個 Redis 實例容量有限(最多只能使用一個服務器的內存)

  • 單點故障(單個 Redis 服務掛掉就無法使用)

  • 擴展性不足(性能受限于單機)

🔧 Redis Cluster 的三大核心機制:

機制說明
數據分片使用 16384 個哈希槽(hash slots),所有數據根據 key 的哈希值分布到不同節點中
主從復制每個主節點可配置多個從節點,做數據備份,提高可用性
自動故障轉移主節點掛了,自動把從節點升級為主節點,無需人工干預

? 二、Redis 集群的部署方式(手把手教學)

我們以部署 6 個 Redis 實例(3 主 3 從)為例來講解:


📁 1. 準備 Redis 安裝文件

你可以先下載并解壓 Redis:

wget http://download.redis.io/releases/redis-6.2.6.tar.gz
tar -zxvf redis-6.2.6.tar.gz
cd redis-6.2.6
make

📂 2. 創建多個 Redis 實例目錄

我們創建 6 個目錄,每個實例用不同端口:

mkdir -p ~/redis-cluster/7000
mkdir -p ~/redis-cluster/7001
mkdir -p ~/redis-cluster/7002
mkdir -p ~/redis-cluster/7003
mkdir -p ~/redis-cluster/7004
mkdir -p ~/redis-cluster/7005

🧾 3. 配置 redis.conf 文件

7000 為例配置一個 redis.conf(復制后修改端口即可):

port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
dir /home/youruser/redis-cluster/7000
logfile "7000.log"
daemonize yes

每個實例都配置好自己的端口,節點配置文件名、日志名和工作目錄。


? 4. 啟動 Redis 實例

逐個啟動這 6 個 Redis 服務:

redis-server ~/redis-cluster/7000/redis.conf
redis-server ~/redis-cluster/7001/redis.conf
...

你可以使用 ps -ef | grep redisnetstat -anp | grep 700 來確認服務是否正常啟動。


🔗 5. 創建 Redis 集群

使用 redis-cli 創建集群,并設置主從結構(3主3從):

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

含義是:

  • 把前 3 個端口(7000~7002)作為主節點

  • 后 3 個端口(7003~7005)作為各主節點的從節點

  • 16384 個槽會被均分

集群創建成功后會提示你是否確認,輸入 yes 即可。


? 三、Redis 集群的運行機制

1. 數據是如何分片的?

  • Redis 把 key 的 CRC16 哈希值 對 16384 取模,確定它屬于哪個槽(slot)。

  • 每個主節點管理一部分槽,例如:

    7000 管理 0 ~ 5460
    7001 管理 5461 ~ 10922
    7002 管理 10923 ~ 16383
    

2. 節點之間如何通信?

  • 所有節點通過 gossip 協議交換狀態信息。

  • 每個節點都知道其他節點的位置和狀態。

  • 使用兩個端口:如 7000 端口用于數據交互,7000+10000=17000 端口用于集群節點間通信。

3. 自動故障轉移

  • 如果主節點宕機,其從節點在其他節點投票多數通過后,會自動升級為主節點。

  • 故障恢復后重新加入集群。


? 四、Redis 集群的客戶端接入

1. 普通 redis-cli 無法處理集群請求(因為 key 可能在不同節點)

必須使用帶 --cluster 的命令,或者使用支持 Cluster 的客戶端。

2. Java 客戶端接入(Jedis 示例)

Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("127.0.0.1", 7000));
nodes.add(new HostAndPort("127.0.0.1", 7001));
nodes.add(new HostAndPort("127.0.0.1", 7002));JedisCluster cluster = new JedisCluster(nodes);
cluster.set("name", "redis-cluster");
String value = cluster.get("name");
System.out.println(value);

? 五、注意事項和限制

限制描述
不支持事務(MULTI/EXEC)跨 slot 操作
MGET/MSET 必須作用于同一 slot(可以用 {tag} 方式強制放入同一槽)
數據遷移時性能會波動
客戶端必須支持 Redis Cluster 協議

? 六、總結(一句話回顧)

Redis Cluster 是一種去中心化的、基于數據分片和主從復制的高可用、高擴展性的 Redis 分布式解決方案。

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

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

相關文章

《中國電信運營商骨干網:歷史、現狀與未來演進》系列 第五篇:新玩家入局——中國廣電CBNNET如何構建全國一張網?

專欄引言 在中國電信、聯通、移動三足鼎立的骨干網格局中&#xff0c;一位身負特殊使命的“國家隊新兵”正加速入場。它就是中國廣電。根據2023年發布的《廣電網絡融合發展戰略》&#xff0c;其核心任務是構建一張“新型廣電網絡”。手握700MHz“黃金頻段”和5G牌照&#xff0c…

QT 國際化 翻譯 總結

目錄 生成TS文件 單純Qt Creator工程 生成ts文件方式一&#xff1a;creator方式 生成ts文件方式二&#xff1a;命令行方式 vs2019QT工程 CMake工程 生成qm文件 代碼 需要先根據ui產生ts文件&#xff0c;再根據ts文件產生qm文件&#xff0c;然后代碼加載 生成TS文件 單…

Java 中實現 Excel 導入一些疑難雜癥

在 Java 中實現 Excel 導入功能時&#xff0c;除了已討論的字段映射、類型轉換和內存管理外&#xff0c;還需注意以下關鍵問題&#xff0c;結合常見踩坑點和最佳實踐總結如下&#xff1a; ?? 一、文件與格式校驗 文件類型與版本兼容性 明確區分 .xls&#xff08;HSSF&#x…

修改Docker-compose使Uptime-Kuma支持IPV6

之前部署了一個Uptime-Kuma用來監控服務的運行&#xff0c;最近&#xff0c;在監控IPV6網絡的時候出現了一點問題&#xff0c;Docker不支持IPV6網絡&#xff1a; 解決方案&#xff1a; 修改/etc/docker/daemon.json文件 {"experimental": true,"fixed-cidr-v6&…

分布式存儲架構的優勢

分布式存儲架構通過將數據分散存儲在多個物理節點上&#xff0c;在性能、可靠性及成本效益方面展現顯著優勢&#xff0c;具體核心優勢如下&#xff1a; 一、?彈性擴展能力? 水平無縫擴容? 通過添加節點即可線性擴展存儲容量與性能&#xff0c;支持EB級數據規模&#xff0…

【4目全景】基于海思3403平臺開發4目360°全景拼接相機方案

此文主要介紹基于海思3403平臺通過實時視頻采集&拼接&融合&顯示實現實時全景空間漫游體驗&#xff0c;該模組將4路視頻拼接成一幅360全景圖&#xff0c;涉及到計算機視覺、計算機圖形學、數字視頻處理等技術。 基本開發步驟主要包括以下幾個方面&#xff1a;4路視頻…

element-plus 按鈕 展開/隱藏

文章目錄 1、小記2、頁面3、typescript事件4、測試數據5、樣式 1、小記 element-plus中el-table 的 expand,箭頭控制子項顯示&#xff0c;有點丑。 想實現類似bootstrap &#xff0c;用按鈕 展開/隱藏子項的功能 2、頁面 <!-- 表內容 --><el-table:data"tabl…

SSE(Server-Sent Events)、WebSocket和Polling的對比

1. 基本概念 協議通信模式協議層數據流向連接方式SSE服務器單向推送基于HTTP/HTTPS服務器→客戶端&#xff08;單向&#xff09;持久化TCP連接WebSocket全雙工通信獨立協議&#xff08;基于TCP&#xff09;服務器?客戶端&#xff08;雙向&#xff09;持久化TCP連接&#xff0…

不同類型的微型導軌精度降低速度有何差異?

微型導軌是一種高精度、小體積、輕量化的直線運動導軌系統&#xff0c;廣泛應用于各種需要精密直線運動的領域。其精度等級是衡量其性能的重要指標&#xff0c;不同精度等級的導軌適用于不同的應用場景。那么&#xff0c;不同類型的微型導軌精度降低速度有何差異&#xff1f; 滾…

debian掛載新硬盤后不識別怎么辦?

在實際服務器部署或本地系統擴容的過程中&#xff0c;為 Debian 系統添加新硬盤是常見操作。無論是物理服務器、云服務器還是虛擬機環境中&#xff0c;當添加一塊新硬盤之后&#xff0c;我們的期望很簡單——系統應立即識別并支持掛載使用。 但理想歸理想&#xff0c;現實卻常…

nt!MiFlushSectionInternal函數分析從nt!IoSynchronousPageWrite函數到Ntfs!NtfsFsdWrite函數

第一部分&#xff1a; while (TRUE) { KeClearEvent (&IoEvent); Status IoSynchronousPageWrite (FilePointer, Mdl, (PLARGE_INTEGER)&StartingOffset…

開發Qt程序時,為什么是CMake?

開發Qt程序時&#xff0c;為什么是CMake&#xff1f; 什么是CMake&#xff1f; CMake 是一個跨平臺的構建工具&#xff0c;用來管理 C/C 項目的編譯過程。它通過讀取 CMakeLists.txt 配置文件&#xff0c;自動生成適合不同操作系統和編譯器的構建腳本&#xff08;比如 Makefi…

web布局10

Grid 布局指的是 CSS Grid Layout &#xff0c;它和以往 CSS 框架&#xff08;CSS Framework&#xff09;中所說的網格系統&#xff08;Grid System&#xff09;有所不同。至今為止&#xff0c;它是唯一一個具有二維能力的布局系統&#xff0c;即&#xff0c;它是一個基于二維網…

Spring AI 項目實戰(十二):Spring Boot +AI + DeepSeek + 百度OCR 公司發票智能處理系統的技術實踐(附完整源碼)

系列文章 序號文章名稱1Spring AI 項目實戰(一):Spring AI 核心模塊入門2Spring AI 項目實戰(二):Spring Boot + AI + DeepSeek 深度實戰(附完整源碼)3Spring AI 項目實戰(三):Spring Boot + AI + DeepSeek 打造智能客服系統(附完整源碼)4

【FR801xH】Ubuntu24.04搭建富芮坤FR801xH系列開發環境教程

00. 目錄 文章目錄 00. 目錄01. FR801xH概述02. FR801xH特性03. gcc-arm-none-eabi-10.3-2021.10概述04. gcc-arm-none-eabi-10.3-2021.10下載05. gcc-arm-none-eabi-10.3-2021.10安裝06. FR801xH-SDK編譯07. 附錄 01. FR801xH概述 FR801xH 系列芯片是面向 SOC&#xff08;片上…

Excel學習05

員工排班表 通過之前的學習&#xff0c;目前的我們已經具備了Excel的初步制作能力。接下來將從實際出發制作一個員工排班表。在制作排版表之前&#xff0c;先來看我們要用到的函數。 DATE函數 date函數是Excel中處理日期的核心函數之一&#xff0c;它能夠將單獨的年、月、日…

黑馬JVM解析筆記(五):深入理解Java字節碼執行機制

1.從字節碼的角度分析i /** * 從字節碼角度分析 a 相關題目 */ public class Demo3_2 {public static void main(String[] args) {int a 10;int b a a a--;System.out.println(a);System.out.println(b);} }a 和 a 實際上代表了兩個不同的操作&#xff0c;它們分別對應自增…

從社交媒體到金融“超級應用”,馬斯克X平臺將上線投資交易服務

報道稱&#xff0c;馬斯克旗下的X平臺將推出“超級App”&#xff0c;提供投資和交易服務&#xff0c;另外&#xff0c;X也在探索引入信用卡或借記卡。作為金融服務布局的第一步&#xff0c;X平臺已宣布將推出X Money——一項數字錢包和點對點支付服務&#xff0c;Visa將成為其首…

【入門第2課】Splunk數據接入

前言 Splunk支持多種多樣的數據源,比如它可以直接上傳文件,可以監控本地的任何目錄或文件,也可以配置通用轉發器等方式來完成數據接入。Splunk所有的設置都可以通過Web頁面、使用Splunk CLI命令,甚至是直接修改配置文件,以此來完成設置。 那么,如何接入數據呢?我們通過…

【數據挖掘】關聯規則算法學習—Apriori

關聯規則算法學習—Apriori Apriori算法是關聯規則挖掘中的經典算法&#xff0c;用于發現數據集中的頻繁項集和強關聯規則。其核心思想基于先驗性質&#xff1a;若一個項集是頻繁的&#xff0c;則其所有子集也一定是頻繁的。該算法通過逐層搜索的迭代方法高效挖掘關聯規則。 要…