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