redis集群的三种部署之主从复制、哨兵机制、cluster集群详解

 更新时间:2026年05月21日 11:04:32   作者:知识学爆omo  
本文介绍了Redis的主要特点,包括高性能、数据持久化、分布式特性、丰富的数据结构、高可用性、开源免费以及可扩展性等七大特点,文章还详细介绍了三种Redis集群部署方式:主从复制、哨兵机制和Cluster集群,并通过实验演示了每种方式的具体配置和操作步骤

前言

Redis是常用的非关系型数据库,具有以下特点:

核心特点:

  • 高性能:Redis基于内存操作,读写速度极快,特别适用于对性能要求高的实时应用。
  • 数据持久化:支持RDB和AOF两种持久化方式,确保即使在服务器重启后也能恢复数据。
  • 分布式特性:通过主从复制、哨兵模式或cluster集群模式,Redis可以轻松地构建高可用和可扩展的服务。
  • 丰富的数据结构:提供了多种数据结构支持,便于开发人员根据实际需求进行数据建模和处理。
  • 高可用性:支持主从复制和Sentinel系统,实现高可用性和故障恢复,当主节点出现故障时,从节点可以自动接管服务,保证系统的连续性和稳定性。
  • 开源免费:Redis是一种开源的软件,遵守BSD协议,可以免费使用和部署。
  • 可扩展性:支持分布式部署,可以通过分片和复制等方式实现高可扩展性。本篇文章介绍redis集群的三种部署方式,包括主从复制、哨兵机制、cluster集群

实验环境介绍

1、6台1u1g的CentOS7 虚拟机,配置了本地yum仓库

2、XShell远程连接工具

redis安装部署

Redis的安装比较简单

yum -y install lrzsz

将压缩包拖入

为Redis安装依赖关系

yum -y install tcl gcc

将压缩包解压到指定安装目录下,编译安装

tar -zxf redis-6.2.6.tar.gz -C /usr/sr0
cd /usr/sr0/redis-6.2.6/
make && make install

指定配置文件启动redis,redis会占用终端,需要放在后台

redis-server redis.conf &

查看进程,其中6379是redis的默认端口

netstat -antp | grep 6379

进入redis

redis-cli

redis集群的三种部署方式

一、主从同步

redis的主从同步工作原理简单概括为:

1、salve向master发送sync命令

2、master启动后台存盘进程,并收集所有修改数据命令

3、master完成存盘后,传送整个数据文件到slave

4、slave接受数据文件,加载到内存中完成首次完全同步

5、后续有新数据产生时,master继续将新的数据命令传递给slave完成同步

redis的主从同步部署方式比起MySQL更加简单,只需要在配置文件中做修改,再指定配置文件启动redis即可

本实验做一主两从

准备三台配置一样的虚拟机,将三台虚拟机的防火墙都关闭

systemctl stop firewalld.service && systemctl status firewalld.service

先对担任主的第一台配置文件进行修改

cd /usr/src/redis-6.2.6/
vim redis.conf

修改bind一栏为0.0.0.0,使服务器监听所有可用的网络端口

同时对从数据库的配置文件进行修改

cd /usr/src/redis-6.2.6/
vim redis.conf

指定主节点的IP地址和端口号

重启三台虚拟机的redis,重新读取配置文件使配置生效

redis-cli shutdown
redis-server redis.conf &

进入redis命令行,查看是否生效

表示担任主节点,并且从节点的数量为两台

验证:在主节点写入数据,数据会被同步到从节点上

二、sentinel哨兵机制

Redis哨兵机制(Sentinel)是一种高可用性解决方案,用于监控和管理Redis集群中的多个节点。

1.基本概念

  • 定义:Redis Sentinel是一个分布式系统,由一个或多个Sentinel进程组成,这些进程会监控Redis集群中的主节点和从节点的健康状态。
  • 功能:主要负责监控、故障转移、通知和配置管理。

2.工作原理

  • 监控:每个Sentinel进程定期通过PING命令检查主节点和从节点的状态。如果发现某个节点不可用,它会将其标记为主观下线状态。
  • 故障判断:当多数Sentinel实例确认某个主节点无法访问时,它们会开始进行故障转移过程。
  • 故障转移:通过选举机制,选举出一个新的主节点,并将原主节点的从节点重新配置为新的从节点。
  • 通知:当Redis实例的状态发生变化时,Sentinel可以通过通知机制将故障或恢复信息发送给管理员或其他系统。

延续上面的实验,此时三台redis处于一主二从的状态

同时修改三台redis的seentinel配置文件

vim sentinel.conf

指定哨兵主节点

主节点ip,端口以及哨兵投票数量2,当有2个及以上的哨兵认为主节点不可用时那么就是客观下线,就需要进行主从故障转移

超过该时间主节点没有响应哨兵,则哨兵会对主节点主观下线,单位是毫秒

启动哨兵

redis-sentinel sentinel.conf &

查看哨兵状态

redis-cli -p 26379
info sentinel

验证:关闭主服务器,模拟故障

可以看到迅速进行了切换

第一台恢复之后,会指向新的主服务器

三、cluster集群

cluster集群是Redis从3.0版本开始支持,自带的一种集群方式。它的原理使用了分布的思想,其数据会均分到所有的主节点上。此部署方式,当数据量过大时,会让服务器均摊压力。

在各个主节点上分配的数据都不是全量的。是分片存储的。目前此种部署方式在生产环境的较多。至少六台,三台主,三台从。

准备6台安装了redis的虚拟机

同时操作:关闭防火墙,修改配置文件

systemctl stop firewalld.service
cd /usr/src/redis-6.2.6
vim redis.conf

使服务器监听所有可用的网络端口

启用cluster集群

重启所有的redis

redis-cli shutdown
redis-server redis.conf &

后面都在单台redis上操作

创建出cluster集群,需要罗列出每一台redis的IP地址和端口号

redis-cli --cluster create 192.168.0.10:6379 192.168.0.20:6379 192.168.0.30:6379 192.168.0.40:6379 192.168.0.50:6379 192.168.0.60:6379 --cluster-replicas 1

查看集群节点状态

redis-cli
cluster nodes

需要到对应的节点上去创建数据

可以使用-c选项连接到整个cluster集群,这样不用频繁切换终端

关掉一台服务器,集群状态还是正常运行

依然是三台主节点

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Redis中5种BitMap应用场景及实现介绍

    Redis中5种BitMap应用场景及实现介绍

    Redis BitMap是一种高效的位操作数据结构,这种结构在处理海量数据的布尔型状态时尤其高效,下面小编就来和大家简单介绍一下5种它的应用场景及实现方法吧
    2025-04-04
  • redis批量删除key的步骤

    redis批量删除key的步骤

    本文分享最新版Redis批量删除key的方法,希望能帮到遇到同样问题的网友。
    2020-09-09
  • 一文详解如何停止/重启/启动Redis服务

    一文详解如何停止/重启/启动Redis服务

    Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统,这篇文章主要给大家介绍了关于如何停止/重启/启动Redis服务的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • Redis主从复制搭建、哨兵搭建、集群搭建全过程

    Redis主从复制搭建、哨兵搭建、集群搭建全过程

    本文详细介绍了Redis主从复制和哨兵模式的搭建步骤、配置方法以及主从复制和哨兵模式的特点和应用,主从复制可以实现读写分离和性能扩展,同时提供了容灾和快速恢复功能,哨兵模式可以实现主节点的自动故障转移,提高系统的可用性和可靠性
    2026-03-03
  • Redis的五种基本数据类型解读(String、List、Hash、Set、ZSet)

    Redis的五种基本数据类型解读(String、List、Hash、Set、ZSet)

    本文详细介绍了Redis的五种基本数据类型(String、List、Hash、Set、ZSet),包括它们的常用指令、应用场景以及在Java中的实现,通过实操示例,帮助读者更好地理解和使用Redis
    2025-12-12
  • 详解Redis瘦身指南

    详解Redis瘦身指南

    Redis应该是开发者最常用的缓存服务器了,它丰富的数据结构,快速高效的内存操作能帮助开发者迅速完成复杂功能的设计,作为一个内存型数据库,Redis经常会遇到内存问题,今天我们来谈一下Redis常见的内存满的问题,介绍一下给 Redis “瘦身”的通用方式。
    2021-05-05
  • Redis分布式锁防止缓存击穿的实现

    Redis分布式锁防止缓存击穿的实现

    本文主要介绍了Redis分布式锁防止缓存击穿的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • redis清空所有数据的三种方法

    redis清空所有数据的三种方法

    本文主要介绍了redis清空所有数据的三种方法,主要包括FLUSHALL,FLUSHDB,SCREPT FLUSH这三个指令,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • NestJS+Redis实现手写一个限流器

    NestJS+Redis实现手写一个限流器

    限流是大型系统必备的保护措施,本文将结合redis , lua 脚本 以及 Nestjs Guard 来实现 限流的效果,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • Redis中RDB与AOF的区别及说明

    Redis中RDB与AOF的区别及说明

    本文详细介绍了Redis的两种主要持久化方式:RDB和AOF,RDB通过快照方式将数据保存到磁盘,适合大规模数据的快速恢复,但数据一致性较低,AOF通过记录每次的写操作,提供高数据一致性,但恢复速度较慢,两种方式可以结合使用,RDB作为后备,AOF作为主要持久化方式
    2025-12-12

最新评论