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

标签 php session redis cluster-computing predis

我正在使用 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 在决定选择哪个节点进行当前读/写操作之前需要从服务器获取一些数据?

上下文:

我们计划使用 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/

相关文章:

php - SQL WHERE 子句中的 IF 和 ELSE

java - session 无法在 GAE 服务器上运行,只能在本地运行

php - Laravel/docker-compose/redis - 未找到类 'Redis'

php - 无法从 json_encoded 数组获取数据

php - 将 PHP 爆炸字符串转换为 AS3

php - 如何检查在 php 中完成的 bash shell

php - 将文本文件导入mysql

php - 当用户关闭(弹出)窗口时调用一些 JavaScript

ruby-on-rails - 如何通过 session ID 找到设计用户?

Redis 禁用持久化