Redis从单点到集群部署模式(单机模式 主从模式 哨兵模式)

 更新时间:2023年11月07日 10:42:47   作者:cartoon  
这篇文章主要为大家介绍了Redis从单点集群部署模式(单机模式 主从模式 哨兵模式)详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

导读

redis 从单点 -> 集群总共有三个部署模式:单机模式,主从模式,哨兵模式,集群模式

单机模式

新手入门模式。单机模式意味着 Redis 是单点的,部署在一台服务器,挂了就挂了,用在本地测试还可以,但是生产环境就算了。

优势

  • 部署简单
  • 省钱,一台服务器就可以了
  • 不涉及主从复制等,数据强一致

劣势

  • 单点意味着稳定性基本上为 0,挂了就挂了
  • 吞吐量受限于单机资源

主从模式

当流量越来越大,单台机器资源不能无限增长,就需要水平扩展到多个节点,使用多个节点分散承接读流量。

主从模式为主节点承接写流量,从节点承接读流量,二者数据一致通过主节点异步复制(全量复制 / 增量复制)到从节点。

优势

  • 读流量被分摊到多个节点上,读流量支持力度变大
  • 当主节点宕机/不可用时,可以手动切换主节点继续提供服务

劣势

  • 当主节点宕机/不可用时手动切换节点,切换过程中 redis (主节点)不可用,并且会丢失主节点 / 从节点之间未同步的数据
  • 稳定性还是不够,依赖手动切换。不适用于生产。
  • 写流量还是让主节点独自承受,写流量还是靠单机资源支撑

哨兵模式

哨兵模式主要解决主从模式中手动切换的部分,本质上哨兵代替了人,通过 gossip 协议监控主节点的健康情况。

优势

  • 不用手动切换主节点了,切换过程中虽然 redis 也是不可用的,但是这个时间会极大的降低

劣势

  • sentinel 与主节点多了一层心跳检测,有可能 sentinel 与主节点的网络抖动导致重新选举主节点。
  • redis 主从节点吞吐因心跳检测可能稍微降低。

集群模式

集群模式主要解决了两个问题:写流量水平扩展 & 哨兵与主节点的网络抖动。

集群模式主要的架构为:主节点平分 16384 个槽,集群支持主节点的动态上线/下线(需要 rehash),主节点与从节点通过心跳关联,主节点失联后从节点有权发起选举成为主节点(raft 算法)。

优势

  • 自管理集群内主从节点上下线,减少因外部集群网络抖动之类的发起的无效选举
  • 数据按照 slot 存放在多个节点,客户端通过服务端主节点的重定向跳转到具体的槽,可动态调整数据分布
  • 减少了集群整体不可用的概率,某一主节点宕机只影响一部分数据的访问
  • 写流量 & 数据平分到多个节点,集群的写请求瓶颈得到缓解

劣势

  • 集群间状态同步使用 gossip 协议,节点数较多存在较多的心跳网络流量
  • 主节点的上线/下线需要进行 rehash ,当节点内数据较多耗时较长
redis 节点间复制有两种:全量复制 & 部分复制

全量复制

出现场景

  • 从节点刚上线需要同步主节点的数据
  • 从节点切换脑裂后从节点偏移量与主节点不一致的时间点
  • 从节点偏移量不在主节点的复制缓冲区中

过程

  • 从节点向主节点发起同步数据的请求
  • 主节点通过 bgsave 形成当前数据的快照,发给从节点
  • 从节点删除历史数据,加载主节点发过来 RDB 文件
  • 从节点拉取主节点缓冲区数据,加载到自身的内存中,并更新当前的偏移量

部分复制

出现场景

  • 全量复制出现场景之外的场景
  • 主从日常复制

过程

  • 主节点将命令同步到缓冲区(AOF)
  • 从节点拉取缓冲区数据,更新到自身的节点中,并更新当前的偏移量

以上就是Redis从单点集群部署模式(单机模式 主从模式 哨兵模式)的详细内容,更多关于Redis单点集群部署模式的资料请关注脚本之家其它相关文章!

相关文章

  • redis数据结构之intset的实例详解

    redis数据结构之intset的实例详解

    这篇文章主要介绍了redis数据结构之intset的实例详解的相关资料, intset也即整数集合,当集合保存的值数量不多时,redis使用intset作为其底层数据保存结构,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • Redis中pipeline(管道)的实现示例

    Redis中pipeline(管道)的实现示例

    Redis管道(Pipeline)技术是一种提高数据处理效率的机制,允许客户端通过一次网络往返(RTT)发送多个命令到服务端,并一次性接收所有响应,本文就来实现管道,感兴趣的可以了解一下
    2024-10-10
  • RedisTemplate序列化设置的流程和具体步骤

    RedisTemplate序列化设置的流程和具体步骤

    在使用 Redis 作为缓存数据库时,我们通常会使用 RedisTemplate 来简化与 Redis 进行交互的操作,而其中一个重要的配置项就是序列化设置,它决定了数据在存储到 Redis 中时的格式,本文将介绍如何进行 RedisTemplate 的序列化设置,以及一些常见的序列化方案
    2024-11-11
  • redis操作学习记录

    redis操作学习记录

    这篇文章主要介绍了redis操作,记录总结了Redis客户端、服务器、string、hash、list、发布/订阅、事务等相关概念、原理与操作技巧,需要的朋友可以参考下
    2020-04-04
  • Redis中三种特殊数据类型命令详解

    Redis中三种特殊数据类型命令详解

    Geospatial是地理位置类型,我们可以用来查询附近的人、计算两人之间的距离等,这篇文章主要介绍了Redis中三种特殊数据类型命令详解,需要的朋友可以参考下
    2024-05-05
  • Redis中的慢日志

    Redis中的慢日志

    这篇文章主要介绍了Redis中的慢日志,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Redis大key问题及解读

    Redis大key问题及解读

    Redis大key指value过大、元素过多或结构复杂,易引发阻塞、网络延迟、内存不均及持久化问题,需拆分数据、优化结构、设置过期、渐进删除,并通过监控与设计预防确保系统稳定
    2025-07-07
  • redis requires ruby version2.2.2的解决方案

    redis requires ruby version2.2.2的解决方案

    本文主要介绍了redis requires ruby version2.2.2的解决方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • Redis中删除策略的几种实现方式

    Redis中删除策略的几种实现方式

    本文详细介绍了Redis的过期键删除策略和内存淘汰策略,过期键删除策略包括定时删除、惰性删除和定期删除,具有一定的参考价值,感兴趣的可以了解一下
    2025-11-11
  • 关于Redis的慢查询日志功能详解

    关于Redis的慢查询日志功能详解

    Redis慢查询是Redis提供的一项性能优化功能,它可以记录某个查询语句的执行时间、命令参数、执行次数等信息,从而帮助运维人员快速定位某个查询语句的性能问题,需要的朋友可以参考下
    2023-07-07

最新评论