news 2026/7/18 14:26:02

redis集群部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
redis集群部署

文章目录

  • 前言
  • 一、redis集群概述
  • 二、redis集群的作用
  • 三、工作流程
  • 四、redis集群的数据分片 重点
  • 五、一台服务器搭建redis集群
    • 1、环境规划
    • 2、redis安装
    • 3、创建6个redis实例
    • 4、启动集群
    • 5、测试集群
  • 六、三台服务器做三主三从
    • 1、环境规划
    • 2、系统设置(所有节点)
    • 3、安装部署redis(所有节点)
    • 4、创建集群节点(所有节点)
    • 5、启动所有redis节点
    • 6、创建集群(任选一台)
    • 7、测试
  • 总结

前言

Redis 集群是分布式架构的核心实现,通过分片存储与主从复制保障高可用、高扩展,本文从原理到实操,详解集群作用、数据分片核心,并提供单机多实例及三主三从部署方案,助力快速落地。


一、redis集群概述

集群(Redis Cluster),Redis 3.0开始引入的分布式存储方案。
集群由多个节点(Node)组成,Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制。

二、redis集群的作用

1、数据分区:集群将数据分散到多个节点,一方面突破了Redis单机内存大小的限制,存储容量大大增加;另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力。
2、高可用:集群支持主从复制和主节点的自动故障转移(与哨兵类似);当任一节点发生故障时,集群仍然可以对外提供服务。

三、工作流程

1、每次写入数据,先校验哈希槽值,再存入对应的master
如:在master1写入a1 1,如果哈希槽值是15000,那么就会自动路由到master3存入数据。
2、master3写入的数据,master2和master1无法查询,只有slave3能查
心跳的作用:

  • 维护集群拓扑结构:让所有节点知道 “集群有哪些节点、各自负责什么槽位。
  • 故障检测:发现宕机的 master 节点,为自动故障转移做准备
  • 同步集群配置变更:确保所有节点配置一致
  • 验证节点身份:防止非法节点混入集群

四、redis集群的数据分片 重点

Redis集群引入了哈希槽的概念,Redis集群有16384个哈希槽(编号0-16383)集群的每个节点负责一部分哈希槽。
即每个Key通过CRC16校验后对16384取余来决定放置哪个哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。
示例:
以3个节点组成的集群为例

  • 节点A包含0到5460号哈希槽
  • 节点B包含5461到10922号哈希槽
  • 节点C包含10923到16383号哈希槽
    Redis集群的主从复制模型
    集群中具有A、B、C三个节点,如果节点B失败了,整个集群就会因缺少5461-10922这个范围的槽而不可以用。为每个节点添加一个从节点A1、B1、C1整个集群便有三个Master节点和三个slave节点组成,在节点B失败后,集群选举B1位为的主节点继续服务。当B和B1都失败后,集群将不可用。

五、一台服务器搭建redis集群

1、环境规划

三主三从架构
服务器:192.168.10.102

2、redis安装

#1关闭防火墙和增强服务systemctl stop firewalld systemctl disable firewalld setenforce0#2安装依赖yuminstall-y gcc gcc++make#3解压redis文件和编译安装cd/opt/tarzvxf redis-5.0.7.tar.gz -C /opt/cd/opt/redis-5.0.7/#由于Redis源码包中直接提供了 Makefile 文件,所以在解压完软件包后,不用先执行 ./configure 进行配置make&&makePREFIX=/usr/local/redisinstall#4、创建软链接(添加到path路径),让Linux能直接找到redis的server文件ln-s /usr/local/redis/bin/* /usr/local/bin/#5执行脚本获取redis服务配置文件cd/opt/redis-5.0.7/utils ./install_server.sh#6查看redis端口号,是否启动成功#net-tools包netstat-antulp|grepredis

3、创建6个redis实例

# 1创建6个redis目录mkdir-p redis-cluster/redis600{1..6}# 2创建6个实例foriin{1..6}do# 复制6个redis.conf文件cp/opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis600$i# 复制6个redis.cli和6个redis.servercp/opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis600$idone

修改如下配置文件(6个)

#其他5个文件夹的配置文件以此类推修改,注意6个端口都要不一样。cd/etc/redis/redis-cluster/redis6001vimredis.conf#bind 127.0.0.1 #69行,注释掉bind 项,默认监听所有网卡protected-mode no#88行,修改,关闭保护模式port6001#92行,修改,redis监听端口,(其他5个端口不一样)daemonizeyes#136行,开启守护进程,以独立进程启动cluster-enabledyes#832行,取消注释,开启群集功能cluster-config-file nodes-6001.conf#840行,取消注释,群集名称文件设置cluster-node-timeout15000#846行,取消注释群集超时时间设置appendonlyyes#700行,修改,开启AOF持久化

启动redis节点

fordin{1..6}docd/etc/redis/redis-cluster/redis600$d# 启动 Redis 服务端进程,并指定加载redis.conf配置文件redis-server redis.confdone

查看:ps -ef | grep redis

4、启动集群

# --replicas 1 表示每个主节点有1个从节点。redis-cli --cluster create127.0.0.1:6001127.0.0.1:6002127.0.0.1:6003127.0.0.1:6004127.0.0.1:6005127.0.0.1:6006 --cluster-replicas1

5、测试集群

redis-cli -p 6001 -c
127.0.0.1:6001> cluster slots


查看哈希槽值

六、三台服务器做三主三从

1、环境规划

192.168.10.105 主节点6001 从节点6002
192.168.10.106 主节点6001 从节点6002
192.168.10.107 主节点6001 从节点6002
前提条件:
redis5.0.7
CentOS 7.9
所有服务器互通:ping通、端口6001、6002放行
禁用防火墙和selinux(生产环境精准放行端口即可)

2、系统设置(所有节点)

# 关闭防火墙和增强服务systemctl stop firewalld systemctl disable firewalld# /etc/sysconfig/selinux永久关闭setenforce0

3、安装部署redis(所有节点)

# 安装依赖yuminstall-y gcc gcc-c++makewgetvim# 时间同步yuminstall-y ntpdate ntpdate ntp.aliyun.com# 同步失败多试几次,可能因为网络原因# 下载rediswget-P /opt/ https://download.redis.io/releases/redis-5.0.7.tar.gzcd/opttarzxvf redis-5.0.7.tar.gzcdredis-5.0.7# 必须路径写前面,否则安装在默认位置。# PREFIX 是 Redis Makefile 中定义的变量,需要传递给 make 命令本身,而非 install 目标make&&makePREFIX=/usr/local/redisinstallln-s /usr/local/redis/bin/* /usr/local/bin/cd/opt/redis-5.0.7/utils ./install_server.sh# 查看netstat-antulp|grepredis

4、创建集群节点(所有节点)

pkill-9 redismkdir-p /etc/redis/cluster/{redis6001,redis6002}cp/opt/redis-5.0.7/redis.conf /etc/redis/cluster/redis6001cp/opt/redis-5.0.7/redis.conf /etc/redis/cluster/redis6002vim/etc/redis/cluster/redis6001/redis.conf# 修改配置文件#bind 127.0.0.1 #69行,注释掉bind 项,默认监听所有网卡protected-mode no#88行,修改,关闭保护模式port6001#92行,修改,redis监听端口,daemonizeyes#136行,开启守护进程,以独立进程启动cluster-enabledyes#832行,取消注释,开启群集功能cluster-config-file nodes-6001.conf#840行,取消注释,群集名称文件设置cluster-node-timeout15000#846行,取消注释群集超时时间设置appendonlyyes#700行,修改,开启AOF持久化cp/etc/redis/cluster/redis6001/redis.conf /etc/redis/cluster/redis6002/redis.confvim/etc/redis/cluster/redis6002/redis.conf port6002#92行,修改,redis监听端口

5、启动所有redis节点

cp/opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/cluster/redis6001/cp/opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/cluster/redis6002/cd/etc/redis/cluster/redis6001 redis-server redis.confcd/etc/redis/cluster/redis6002 redis-server redis.conf

6、创建集群(任选一台)

redis-cli --cluster create192.168.10.105:6001192.168.10.105:6002192.168.10.106:6001192.168.10.106:6002192.168.10.107:6001192.168.10.107:6002 --cluster-replicas1

7、测试

redis-cli -p 6001 -c
在192.168.10.105 添加数据a1 111 和 a2 2
数据保存进行路由。

在192.168.10.106查到a1

在192.168.10.107查到a2


总结

本文系统梳理 Redis 集群核心逻辑,聚焦数据分片关键技术,通过单机 6 实例与三台服务器三主三从的实操部署,结合测试验证,完整呈现集群搭建全流程,为高可用部署提供可落地指南。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 10:38:08

Python航天轨道计算实战:从基础原理到星际任务规划

Python航天轨道计算实战:从基础原理到星际任务规划 【免费下载链接】poliastro poliastro - :rocket: Astrodynamics in Python 项目地址: https://gitcode.com/gh_mirrors/po/poliastro 在现代航天工程中,精确的轨道计算是连接理论探索与实际应用…

作者头像 李华
网站建设 2026/7/17 7:20:57

Agent路径选择总是不合理?,一文搞懂博弈论在游戏AI中的决策优化

第一章:游戏 AI 的 Agent 行为决策在现代电子游戏中,AI 控制的 Agent 不仅需要感知环境变化,还必须基于当前状态做出合理的行为决策。这类决策系统通常依赖于行为树、有限状态机或效用理论等模型,以模拟接近人类的反应逻辑。行为决…

作者头像 李华
网站建设 2026/7/17 17:57:52

14、文件操作、命令与内置命令详解

文件操作、命令与内置命令详解 1. 文件操作中的扩展通配模式 在文件操作里,扩展通配模式能让我们更灵活地匹配文件。下面是几种常见的扩展通配模式: - ?(pattern-list) :该模式匹配给定模式的零次或一次出现。例如, ?(john|paul)2 能匹配 john2 、 paul2 和…

作者头像 李华
网站建设 2026/7/17 11:53:26

如何在macOS上免费搭建企业级远程存储:iSCSI Initiator终极指南

如何在macOS上免费搭建企业级远程存储:iSCSI Initiator终极指南 【免费下载链接】iSCSIInitiator iSCSI Initiator for macOS 项目地址: https://gitcode.com/gh_mirrors/is/iSCSIInitiator 想要为你的Mac电脑轻松扩展存储空间吗?macOS iSCSI Ini…

作者头像 李华
网站建设 2026/7/18 12:02:23

ArcObjects SDK 10.8终极指南:从入门到精通的227个实战案例解析

ArcObjects SDK 10.8终极指南:从入门到精通的227个实战案例解析 【免费下载链接】arcobjects-sdk-community-samples This repo contains the source code samples (.Net c#, .Net vb, and C) that demonstrate the usage of the ArcObject SDK. 项目地址: https…

作者头像 李华
网站建设 2026/7/17 17:43:39

TscanCode静态代码分析终极指南:快速掌握腾讯开源代码质量利器

TscanCode静态代码分析终极指南:快速掌握腾讯开源代码质量利器 【免费下载链接】TscanCode TscanCode: 腾讯开源的一款面向C/C、C#和Lua代码的快速准确的静态分析工具,旨在帮助程序员从一开始就发现代码缺陷。 项目地址: https://gitcode.com/gh_mirro…

作者头像 李华