首页 > 数据库 >Redis三种高可用模式:主从、哨兵、集群

Redis三种高可用模式:主从、哨兵、集群

时间:2024-08-12 10:29:41浏览次数:10  
标签:Redis 模式 主从 集群 哨兵 节点

一、主从

主从模式的定义

Redis的主从模式是一种数据备份和读写分离的模式。在这种模式下,有一个主节点(Master)和一个或多个从节点(Slave)。所有的写操作都在主节点上进行,而读操作可以在主节点和从节点上进行。从节点会复制主节点的数据,实现数据的备份。
image

主从模式的工作原理

在主从模式下,主节点负责处理所有的写操作,并将写操作记录在内存中的缓冲区。从节点从主节点获取这些写操作记录,并在自己的数据库上执行这些操作,从而保持与主节点的数据一致。此外,读请求可以在主节点和从节点上进行,从而实现读写分离,提高系统的读取性能。
image

主从模式的配置和使用

配置主从模式相对简单,只需要在从节点的配置文件中设置主节点的IP地址和端口号,然后启动从节点即可。从节点会自动连接到主节点,并开始复制数据。在使用上,用户可以直接向主节点发送写请求,而读请求可以发送到主节点或从节点。

主从模式的优点和局限性

优点
  • 可以实现数据的备份,提高数据的安全性;
  • 读写分离,提高系统的读取性能
局限性
  • 不能自动切换,如果主节点发生故障,从节点不能自动切换为主节点,需要人工干预;
  • 所有的写操作都在主节点上进行,如果写请求量大,主节点可能会成为性能瓶颈。

二、哨兵

哨兵模式的定义

Redis的哨兵模式是在主从模式的基础上,增加了故障转移的功能。

哨兵模式下,除了主节点和从节点,还有一个或多个哨兵节点(Sentinel)。哨兵节点的主要任务是监控主节点和从节点的运行状态,并在主节点发生故障时,自动将从节点提升为主节点。
image

哨兵模式的工作原理

在哨兵模式下,哨兵节点会定期检查主节点和从节点的运行状态。如果发现主节点发生故障,哨兵节点会在从节点中选举出一个新的主节点,并通知其他的从节点和哨兵节点。此外,哨兵节点还可以接收客户端的查询请求,返回当前的主节点信息,从而实现客户端的透明切换。
image

Sentinel主要负责三个方面的任务:

  • 监控:通过发送命令,不间断的监控Redis服务器运行状态,包括主服务器和从服务器。
  • 提醒:当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
  • 自动故障迁移核心任务):当哨兵监测到主服务器宕机,会自动在已下线主服务器属下的所有从服务器里面,挑选出一个从服务器将其转换为主服务器(自动切换)。然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

哨兵模式的配置和使用

配置哨兵模式需要在哨兵节点的配置文件中设置主节点的信息和故障转移的策略,然后启动哨兵节点即可。在使用上,用户可以直接向主节点发送写请求,而读请求可以发送到主节点或从节点。如果主节点发生故障,用户可以从哨兵节点获取新的主节点信息,然后向新的主节点发送请求。

哨兵模式的优点和局限性

优点
  • 哨兵模式可以实现故障转移,提高系统的可用性
  • 哨兵模式可以实现客户端的透明切换,提高系统的可维护性。
局限性
  • 哨兵节点需要额外的资源和维护,增加了系统的复杂性;
  • 主节点发生故障后,新的主节点可能会有一段时间的数据不一致,影响数据的准确性。

三、集群

集群模式的定义

Redis的集群模式是一种分布式的解决方案,它允许多个Redis节点(服务器)协同工作,提供更高的性能和可用性。在这种模式下,数据被分片存储在多个节点上,每个节点负责一部分数据的读写。

集群模式主要解决水平拓展问题和整体的高可用(局部节点故障不影响其他节点的数据)。
如果要保证所有数据的高可用还需要配合主从模式。

集群模式的工作原理

在集群模式下,Redis使用一种叫做哈希槽的技术来实现数据的分片。整个哈希空间被分成16384个哈希槽,每个节点负责一部分哈希槽。当一个键需要被存储时,Redis会根据键的值计算出一个哈希值,然后根据哈希值决定将这个键存储在哪个节点上。这样,读写请求就可以在多个节点上并行处理,提高了系统的性能。
image
集群模式将所有数据分片,分成16384个插槽位SLOT,16384个插槽分配到所有Master节点上,如图Master-01、Master-02、Master-03个分为1/3插槽位。

在Redis集群模式下,任意一个Master节点都可以接受客户端的请求。当客户端向某个Master节点发送请求时,如果这个请求的键所对应的哈希槽不在这个Master节点负责的范围内,那么这个Master节点会返回一个重定向信息,告诉客户端应该向哪个节点发送请求。这个过程对客户端来说是透明的,客户端只需要按照重定向信息重新发送请求即可。这种方式确保了Redis集群可以有效地处理并分发客户端的请求,提高了系统的性能和可用性。

集群模式的配置和使用

配置集群模式需要在每个节点的配置文件中设置集群模式,并指定其他节点的信息,然后启动所有节点即可。在使用上,用户可以直接向任何一个节点发送请求,节点会根据请求的键自动路由到正确的节点上。

集群模式的优点和局限性

优点
  • 集群模式可以实现数据的水平扩展,提高了系统的性能和存储容量;
  • 集群模式实现高可用性,即使某个节点发生故障,系统仍然可以继续提供服务。
局限性
  • 配置和维护相对复杂,需要管理多个节点;
  • 某些操作,如多键操作和事务,可能会受到限制。

四、三种模式的比较和选择

主从模式、哨兵模式和集群模式的比较

  • 主从模式是最基础的模式,配置简单,主要用于数据备份和读写分离,提高系统的读取性能。但是,主从模式无法处理主节点故障的情况。

  • 哨兵模式在主从模式的基础上增加了故障转移的功能,可以自动处理主节点故障的情况,提高了系统的可用性。但是,哨兵模式需要额外的哨兵节点,增加了系统的复杂性。

  • 集群模式是一种分布式的解决方案,可以实现数据的水平扩展,提高了系统的性能和存储容量。同时,集群模式也可以实现高可用性,即使某个节点发生故障,系统仍然可以继续提供服务。但是,集群模式的配置和维护相对复杂,需要管理多个节点。

根据不同的应用场景选择合适的模式

  • 如果你的应用场景主要是读取数据,数据量不大,对数据的一致性要求不高,那么主从模式可能是一个不错的选择。

  • 如果你的应用场景需要高可用性,即使在主节点发生故障的情况下也需要保证服务的正常运行,那么哨兵模式可能更适合你。

  • 如果你的应用场景数据量大,需要高性能和高可用性,那么集群模式可能是最好的选择。集群模式可以提供更高的性能,更大的存储容量,以及更好的故障容忍能力。

标签:Redis,模式,主从,集群,哨兵,节点
From: https://www.cnblogs.com/zhaojinhui/p/18354446

相关文章

  • Golang中使用redis,mysql
    一、redis简介redis(REmoteDIctionaryServer)是一个由SalvatoreSanfilippo写key-value存储系统,它由C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value类型的数据库,并提供多种语言的API。和Memcached类似,它支持存储的value类型相对更多,包括string(......
  • (七)Redis 持久化 AOF、RDB
    Redis一旦服务器宕机,内存中的数据将全部丢失,从后端数据库恢复这些数据,对数据库压力很大,且性能肯定比不上从Redis中读取,会拖慢应用程序。所以,对Redis来说,实现数据的持久化,避免从后端数据库中进行恢复,是至关重要的。1、AOF日志AOF日志是先执行命令,把数据写入内存,然后才记......
  • Redis实际项目中涉及缓存一致性的处理
    在实际项目中,Redis缓存一致性是一个关键问题,尤其是在分布式系统中。缓存一致性指的是确保缓存中的数据与实际数据库中的数据保持同步。以下是一些在实际项目中处理Redis缓存一致性的方法和最佳实践:1.缓存失效策略a.TTL(TimetoLive):设置缓存的过期时间。当数据过期后,缓存会自......
  • 五.redis
    目录五.redis5.1什么是CDN5.2CDN的原理5.3首先,介绍一下Redis过期删除策略Redis对于过期的key,有两种删除策略:定期删除惰性删除5.4为啥需要两种删除策略呢?5.5然后,再介绍Redis淘汰策略.5.6那么,如何设置淘汰策略呢?5.7如何配置Redis能使用的最大的内存大小第一种方式:第二种方式:5......
  • Redis 数据类型详解
    Redis是一个开源的内存数据结构存储系统,广泛应用于缓存、消息队列、实时数据分析等场景。Redis提供了多种数据类型,本文将详细介绍Redis的五种主要数据类型及其应用场景,并从概述、基本操作、应用场景和数据结构等方面进行深入探讨。1.字符串(String)概述字符串是Redis......
  • Redis 数据类型详解
    Redis是一个开源的内存数据结构存储系统,广泛应用于缓存、消息队列、实时数据分析等场景。Redis提供了多种数据类型,本文将详细介绍Redis的五种主要数据类型及其应用场景,并从概述、基本操作、应用场景和数据结构等方面进行深入探讨。1.字符串(String)概述字符串是Redis......
  • 【Redis进阶】Redis单线程模型和多线程模型
    目录单线程为什么Redis是单线程处文件事件理器的结构文件处理器的工作流程总结文件事件处理器连接应答处理器命令请求处理器命令回复处理器多线程为什么引入多线程多线程架构多线程执行流程关于Redis的问题Redis为什么采用单线程模型Redis为什么要引入多线程呢......
  • 【Redis进阶】缓存设计模式
    目录CacheAside(旁路缓存)模式概念读操作流程如上图所示写操作流程如上图所示代码示例总结Read-Through模式概念操作流程:优点:Write-Through模式概念操作流程:优点:Write-Behind(Write-Back)模式概念操作流程:优点:缺点:总结缓存设计模式是指将缓存作为系统架......
  • springboot整合redis
    第一部分:redis的下载安装百度网盘下载:通过百度网盘分享的文件:Redis-x64-5.0.14.zip链接:https://pan.baidu.com/s/1GEQj4p0l4fy1DzwCIknpRg?pwd=qokq 提取码:qokq --来自百度网盘超级会员V5的分享第二部分:安装(1)双击打开软件(2)点击next(3)点击next(4)更改路径,点击next......
  • 节假日配置初始化 redis缓存方案及@PostConstruct注解,Cache方案GuavaUtils.java工具类
    节假日配置初始化redis缓存方案及@PostConstruct注解,Cache方案GuavaUtils.java工具类启动报错:本机,在jenkins上面没有报错?包括嵌套的注入Beanjava静态代码块和spring@value等注解注入顺序https://www.cnblogs.com/oktokeep/p/15530697.html/***节假日配置初始化redis缓存......