Predis:两种集群策略的优缺点

Predis: Pros and Cons of the two cluster strategies

我正在使用 Predis 连接到 Redis 3.0.2 集群。因此,我可以选择使用 predisredis 集群策略。我想知道选择其中一个而不是另一个是否有任何重要的利弊?

根据我在文档中的徘徊,我想到了以下几点,但我不确定我的理解是否正确:

  1. 使用redis策略时,我们不必在建立连接时列出集群的每个节点。 Reference(可能是专业人士 :))

    When using redis-cluster, it is not necessary to pass all of the nodes that compose your cluster but you can simply specify only a few nodes

  2. 上面链接的文章的下一行说:

    Predis will automatically fetch the full and updated slots map directly from Redis by contacting one of the servers.

这会不会是性能方面的一个缺点?因为 Predis 在决定当前 read/write 操作哪个节点 select 之前需要从服务器获取一些数据?

上下文:

我们计划使用 Redis 来存储 PHP 会话。它是一个 AJAX 繁重的 Web 应用程序,在高峰时段有数千名活跃用户。这就是为什么我们要将负载分散到多个 Redis 节点上。我们很乐意在连接建立代码中手动维护服务器地址列表,以便使用 predis 策略,如果与此特定用例的 redis 策略相比,它有望提供更好的性能。

IIUC 您正在内部争论使用 Predis 的客户端分片还是利用 Redis v3 的集群功能。

当数据库不支持时,客户端分片非常适合集群,而且这种方法最初通常是最简单的实现方式。但是,当数据库确实提供本机集群功能时(例如 Redis v3 的情况),使用它几乎总是更好。

就性能而言,我不太确定这些方法之间是否存在任何显着差异。 Redis 分区也在 http://redis.io/topics/partitioning

中讨论