Redis Sentinel和Cluster的优势

Redis Sentinel和Cluster的优势,redis,redis-cluster,redis-sentinel,Redis,Redis Cluster,Redis Sentinel,我计划创建一个高可用的Redis集群。读了很多关于构建Redis集群的文章后,我感到困惑。那你到底是什么 Redis Sentinel Master1 Slave1 Slave2群集的优势是什么?作为Redis多节点分片群集,它是否更可靠 Redis多节点分片集群的优势是什么?作为Redis Sentinel Master1 Slave1 Slave2群集,它是否更可靠 有关Redis Sentinel Master1 Slave1 Slave2群集的更多问题: 当我有一个主服务器和两个从

我计划创建一个高可用的Redis集群。读了很多关于构建Redis集群的文章后,我感到困惑。那你到底是什么

  • Redis Sentinel Master1 Slave1 Slave2群集的优势是什么?作为Redis多节点分片群集,它是否更可靠
  • Redis多节点分片集群的优势是什么?作为Redis Sentinel Master1 Slave1 Slave2群集,它是否更可靠
有关Redis Sentinel Master1 Slave1 Slave2群集的更多问题:

  • 当我有一个主服务器和两个从服务器,流量越来越高,所以这个集群将变得越来越小,我如何才能使集群变得更大
有关Redis多节点分片群集的更多问题:

  • 为什么在一个实例上但在不同端口上运行群集时会有这么多演示?那对我来说毫无意义
  • 当我有一个包含4个主机和4个副本的集群时,应用程序或客户端如何确保写入集群?当Master1和Slave1即将死亡,但我的应用程序始终写入Master1的IP时,它将不再工作。有哪些解决方案可以很好地实现分片集群,使应用程序可以通过单个ip和端口找到它?继续?哈普洛西
  • 当我使用Keepalived等4个主控设置时,这不会抵消不同的主控设置吗
  • 此外,我需要理解为什么多节点集群只适用于在内存可用时需要写入更多数据的解决方案。为什么?对我来说,多主机设置听起来很好,可以扩展
  • 当群集不处于缓存模式时,分片群集设置不支持多键操作是否正确

我不确定这两种解决方案是否是唯一的。希望你们能帮助我理解Redis的架构。很抱歉问了这么多问题。

我将尝试回答您的一些问题,但首先让我介绍一下Redis的不同部署选项。 Redis有三种基本部署:单节点、sentinel和群集

  • 单节点—运行Redis的单进程的基本解决方案。 它不可扩展,也不高可用性
  • Redis Sentinel—由多个节点组成的部署,其中一个节点被选为主节点,其余节点被选为从节点。 它增加了高可用性,因为在主设备出现故障的情况下,其中一个从设备将自动升级为主设备。 它是不可伸缩的,因为主节点是唯一可以写入数据的节点。 您可以将客户机配置为将读取请求定向到从机,这将从主机获取部分负载。但是,在这种情况下,从机可能会返回过时的数据,因为它们异步复制主机
  • Redis群集—至少由6个节点(3个主节点和3个从节点)组成的部署。其中数据在主机之间进行分片。它是高度可用的,因为在主人失败的情况下,他的一个奴隶将自动升级为主人。它是可伸缩的,因为您可以添加更多节点并重新硬存储数据,以便新节点承担部分负载
因此,要回答您的问题:

  • Sentinel优于Redis群集的优点是:
    • 硬件-您可以使用三个节点设置完全工作的Sentinel部署。Redis群集至少需要六个节点
    • 简单性—通常更易于维护和配置
  • 与Sentinel相比,Redis Cluster的优势在于它具有可扩展性
  • 这两个部署之间的决定应该基于您的预期负载。 如果您的写负载可以通过单个Redis主节点进行管理,那么您可以使用Sentinel部署

    如果一个节点无法处理预期负载,则必须进行集群部署

  • Redis Sentinel部署是不可扩展的,因此使集群更大不会提高性能。唯一的例外是,添加从属可以提高读取性能(如果您将读取请求直接发送到从属)

  • 在具有多个端口的单个节点上运行的Redis群集仅用于开发和演示目的。在生产中它是无用的

  • 在Redis Cluster deployment中,客户端应具有对所有节点的网络访问权限(仅限节点Master1)。这是因为数据在主机之间被分片。 如果客户机试图向Master1写入数据,但Master2是数据的所有者,Master1将向客户机返回一条移动消息,引导其向Master2发送请求。 在所有Redis节点前面不能有一个HAProxy

  • 答案与第5条相同,在集群部署中,客户端应该直接连接到所有主服务器和从服务器,而不是通过LB或Keepalive

  • 我不确定我完全理解你的问题,但Redis Cluster是Redis唯一可扩展的解决方案

  • Redis Cluster deployment仅当所有密钥位于同一节点时才支持多密钥操作。您可以使用“哈希标签”强制同一主机处理多个密钥

  • 一些好的链接可以帮助您更好地理解它:

    关于不同Redis部署选项的说明:


    关于Redis集群架构的详细说明:

    想问一个问题,Redis集群中能有5个主节点和8个从节点吗?是的,你能。