gpt4 book ai didi

php - 如何使用 Predis 验证客户端分区

转载 作者:可可西里 更新时间:2023-11-01 11:13:14 26 4
gpt4 key购买 nike

我正在尝试通过 Predis 使用客户端分区。一切似乎都在工作,但我如何验证值是否存储在多个服务器上?我希望能够列出每台服务器上的所有 key ,但在 predis 文档中看不到如何操作。我尝试进行简单的信息调用,但出现异常错误:

$predisClient->info()生成“无法在连接集群上使用‘INFO’”异常。 (这在使用一台服务器时确实有效。)

$predisClient->executeRaw( ['CLUSTER INFO'] )生成“无法在连接集群上使用‘CLUSTER INFO’”异常。

我的 $predisClient定义如下:

$predisClient = new Predis\Client(['tcp:://127.0.0.1', 'tcp://<REMOTE SERVER IP HERE>']);

我正在使用 redis 3.0.7 和 predis 1.1。

最佳答案

考虑到您使用的是 Predis v1.1,您可以简单地执行以下操作:

foreach ($client as $node) {
$info = $node->info('keyspace');
// ...
}

这将适用于 redis-cluster 和客户端分片集群。请注意,您将客户端配置为使用后者,但 CLUSTER INFO 仅受 redis-cluster 支持(无论如何您都需要将此命令定向到特定节点,因为此命令不携带任何 key 这意味着 Predis 无法计算槽)。

当您想列出存储在每个节点上的 key 时,请避免使用 KEYS(除非它只是为了针对本地设置进行测试)并且更喜欢 SCAN .使用 Predis 时,Predis\Collection\Iterator\Keyspace迭代器对 SCAN 进行抽象,以便您可以简单地使用标准的 foreachiterator_to_array()

关于php - 如何使用 Predis 验证客户端分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38022064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com