我正在使用 Predis 连接到 Redis 3.0.2 集群。因此,我可以选择使用 predis
或 redis
集群策略。我想知道选择其中一个而不是另一个是否有任何重大的利弊?
根据我对文档的漫游,我有以下几点,但我不确定我的理解是否正确:
使用
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
上面链接的文章的下一行说:
Predis will automatically fetch the full and updated slots map directly from Redis by contacting one of the servers.
这会不会是性能方面的一个缺点?因为 Predis 在决定选择哪个节点进行当前读/写操作之前需要从服务器获取一些数据?
上下文:
我们计划使用 Redis 来存储 PHP session 。它是一个 AJAX 繁重的 Web 应用程序,在高峰时段有成千上万的活跃用户。这就是为什么我们要将负载分散到多个 Redis 节点上。我们很乐意在连接建立代码中手动维护服务器地址列表,以便使用 predis
策略,如果它有望提供比 redis
策略更好的性能对于这个特定的用例。
最佳答案
IIUC,您在内部争论是使用 Predis 的客户端分片还是利用 Redis v3 的集群功能。
当数据库不支持时,客户端分片非常适合集群,而且这种方法最初通常是最简单的实现方式。但是,当数据库确实提供 native 集群功能时(例如 Redis v3 的情况),使用它几乎总是更好。
就性能而言,我不太确定这些方法之间是否存在任何显着差异。 Redis 分区也在 http://redis.io/topics/partitioning 中讨论。
关于php - Predis:两种集群策略的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30757645/