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缓存雪崩的物种解决方案

    Redis缓存雪崩的物种解决方案

    在高并发系统中,Redis作为核心缓存组件,通常扮演着重要的"守门员"角色,当大量缓存同时失效时,会导致请求如洪水般直接涌向数据库,造成数据库瞬间压力剧增甚至宕机,这种现象被形象地称为"缓存雪崩",本文给大家介绍了Redis缓存雪崩的5种应对措施,需要的朋友可以参考下
    2025-04-04
  • 浅谈Redis阻塞的9种情况

    浅谈Redis阻塞的9种情况

    本文主要介绍了浅谈Redis阻塞的9种情况,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Redis中Lua脚本的使用和设置超时

    Redis中Lua脚本的使用和设置超时

    本文将介绍Redis中Lua脚本的基本用法,以及脚本超时导致的问题和处理方式。文中通过示例代码介绍的非常详细,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Redis列表类型的常用命令小结

    Redis列表类型的常用命令小结

    这篇文章给大家整理了在操作Redis列表类型中的常用命令,文章总结的很全面,对大家学习Redis具有一定的参考借鉴价值,下面来一起看看吧。
    2016-09-09
  • Redis 的各项功能主要解决了什么问题

    Redis 的各项功能主要解决了什么问题

    Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。这篇文章主要介绍了Redis 的各项功能主要解决了什么问题,需要的朋友可以参考下
    2018-10-10
  • 解决Redis的缓存与数据库双写不一致问题

    解决Redis的缓存与数据库双写不一致问题

    在使用缓存和数据库配合时,常见的CacheAsidePattern模式要求读操作先访问缓存,若缺失再读数据库并更新缓存;写操作则是先写数据库后删除缓存,但这种模式可能导致缓存与数据库间的双写不一致问题
    2024-10-10
  • Redis如何存储对象与集合示例详解

    Redis如何存储对象与集合示例详解

    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希类型)本文介绍了关于Redis是如何存储对象与集合的相关资料,需要的朋友可以参考下
    2018-05-05
  • Redis HyperLogLog数据量统计的实现实例

    Redis HyperLogLog数据量统计的实现实例

    在大数据时代,统计海量数据中的唯一值是一个常见的需求,但同时也是极具挑战性的任务,传统的统计方法可能会消耗大量内存或计算资源,而 Redis 的 HyperLogLog 数据结构 则提供了一种高效、轻量的解决方案,下面就来详细介绍一下HyperLogLog的使用,感兴趣的可以了解一下
    2025-09-09
  • Redis缓存-序列化对象存储乱码问题的解决

    Redis缓存-序列化对象存储乱码问题的解决

    这篇文章主要介绍了Redis缓存-序列化对象存储乱码问题的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 从零搭建SpringBoot2.X整合Redis框架的详细教程

    从零搭建SpringBoot2.X整合Redis框架的详细教程

    这篇文章主要介绍了从零搭建SpringBoot2.X整合Redis框架的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论