有什么区别 between:Redis 复制设置、Redis 集群设置 Redis Sentinel 设置和 Redis with Master with Slave only?[REDISSON]

What is the difference between:Redis Replicated setup, Redis Cluster setup Redis Sentinel setup and Redis with Master with Slave only?[REDISSON]

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

而且我发现有几个

我不是集群方面的专家,我不明白这些设置之间的区别。

你能详细解释一下区别吗?

免责声明我是 AWS 员工。

不知道Redis Replicated Setup和Redis在Master-Slave模式下有什么不同。也许他们的意思是 cross-region 复制?

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

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