[Redis]复制设置,Redis集群设置,Redis Sentinel设置和仅Redis with Master with Slave之间有什么区别?[REDISSON]

问题描述

我已经读过https://github.com/redisson/redisson

我发现有几个

  • Redis复制设置(包括对AWS ElastiCache和Azure Redis缓存的支持
  • Redis群集设置(包括对AWS ElastiCache群集和Azure Redis缓存的支持
  • Redis Sentinel设置
  • 仅具有从属主机的Redis主机

我不是集群专家,也不了解这些设置之间的区别。

您能如实解释这些差异吗?

解决方法

免责声明我是AWS员工。

我不知道Redis Replicated Setup与主从模式下的Redis有何不同。也许它们意味着跨区域复制?

无论如何,我都可以尝试解释我所知道的设置:

  1. Redis with Master with Slave only-是一个单分片设置,您可以在其中创建一个主副本以及一个或多个辅助(从属)副本(希望PC警察不会逮捕我)。此设置用于提高内存存储的耐用性。不建议使用辅助副本进行读取,因为这样的设置最终会保证一致性,并且副本读取可能是过时的(取决于复制滞后时间)。
  2. Redis Cluster setup-云提供的设置支持,例如AWS Elasticache。在此设置中,您的工作负载可以水平分布在多个分片上,并且每个分片可以具有自己的辅助副本。您的客户端库必须支持此设置,因为它需要在客户端级别维护与多个节点的多个连接。此外,为了有效地使用集群模式,您需要遵循一些本地性规则:
    • 具有foo{<shard>}bar表示法的键将根据大括号内存储的内容被路由到其分片。
    • 您不能跨分片使用msetmget和其他多键命令。如果它们的键包含相同的{shard}部分,您仍然可以使用这些命令。
    • Redis公开了其他群集模式管理命令,但是由于云提供了使用它们来管理Redis群集本身的功能,因此通常会被云提供商劫持并向用户隐藏。
    • Redis群集能够在分片之间迁移部分工作负载。但是,它仍然必须保留关于{shard}表示法的正确性。由于您的客户端库负责从特定的分片中获取数据,因此当分片将其重定向到另一个节点时,它必须处理“移动”响应。
  3. Redis Sentinel setup-使用为Redis群集提供service discovery functionality的附加服务器。没有严格要求,我相信它在用户中不太受欢迎。它充当有关每个节点的运行状况和状态的唯一事实来源。它提供了监视,管理和服务发现功能,用于管理Redis集群。许多Redis客户端库提供了连接到Redis标记节点的选项,以实现自动服务发现和无缝的故障转移流程。此设置不那么受欢迎的原因之一是因为像AWS Elasticache这样的云公司提供了开箱即用的服务。