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