我们最近选择在我们的应用程序中使用Amazon弹性缓存redis,而在文档中有些事情并不清楚。
1)Redis群集模式已禁用群集在群集的AWS控制台中具有主要端点,当我们使用jedis客户端连接到主端点时,此主端点是否将读取流量分配到群集的只读副本?或者应用程序显式必须连接到群集中的只读副本?例如。 Jedis客户
2)为Redis启用的群集模式在Redis的AWS控制台中具有配置端点,因此当我们使用客户端连接到此配置端点时,配置端点是否在群集中的分片之间分配写入和读取流量?或者应用程序必须使用传递分片主要端点的JedisCluster对象显式连接到每个分片?
3)对于为Redis启用的群集模式,弹性缓存如何跨分片分割密钥?
答案 0 :(得分:0)
刚刚从链接https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Endpoints.html中注意到,您似乎可以使用它们的https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Endpoints.html#Endpoints.Find.CLI.ReplGroups并发现实际端点,并将其视为常规分片/副本节点,或者使用其端点:
Redis独立节点,使用该节点的端点进行读写 操作。
Redis(禁用群集模式)群集,请使用主端点进行 所有写操作。使用阅读器端点平均拆分传入的 与所有只读副本之间的端点的连接。使用 用于读取操作的单个节点端点(在API / CLI中,这些 称为读取端点)。 引用
因此,看起来主端点将充当代理,读取器端点也将执行相同的工作,并加上一些负载平衡,包括根据密钥将密钥路由到正确的分片。读取客户端将仅连接到一个端点。
Redis(启用集群模式)集群,请使用集群的配置 所有操作的端点。您必须使用支持Redis的客户端 群集(Redis 3.2)。您仍然可以从单个节点端点读取 (在API / CLI中,这些称为读取端点)。
与以前相同,但是使用单个端点进行读写。这样做可能是为了使可用性和发生故障时变得透明。
答案 1 :(得分:0)
就像在支持群集的客户端中一样,如果客户端足够聪明,它可以使用配置终结点来发现所有主服务器/从服务器,然后由您来连接和维护它们,因此此类支持群集的客户端确实有一些选择:
一旦发现拓扑,关于哪个主节点拥有哪个插槽分区的插槽所有权信息,客户端就可以选择标准的CRC哈希来找到该插槽并直接转到该节点。