Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用Predis验证客户端分区_Php_Redis_Predis - Fatal编程技术网

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

Php 如何使用Predis验证客户端分区,php,redis,predis,Php,Redis,Predis,我试图通过Predis使用客户端分区。一切似乎都正常,但如何验证值是否存储在多个服务器上?我希望能够列出每台服务器上的所有密钥,但在predis文档中看不到如何列出。我正在尝试执行一个简单的信息调用,但出现异常错误: $predisClient->info()生成“无法在连接群集上使用'info'异常”。(当使用一台服务器时,此功能不起作用。) $predisClient->executeRaw(['CLUSTER INFO'])生成“不能在连接的群集上使用'CLUSTER INFO'异常” 我

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

$predisClient->info()
生成“无法在连接群集上使用'info'异常”。(当使用一台服务器时,此功能不起作用。)

$predisClient->executeRaw(['CLUSTER INFO'])
生成“不能在连接的群集上使用'CLUSTER INFO'异常”

我的
$predisClient
定义如下:

$predisClient=new Predis\Client(['tcp://127.0.0.1','tcp://');


我正在使用redis 3.0.7和predis 1.1。

考虑到您正在使用predis v1.1,您只需执行以下操作:

foreach ($client as $node) {
    $info = $node->info('keyspace');
    // ...
}
这将适用于redis集群和客户端分片集群。请注意,您已将客户端配置为使用后者,但只有redis CLUSTER才支持
群集信息
(无论如何,您都需要将此命令指向特定节点,因为此命令不带任何键,这意味着Predis无法计算插槽)


当您想要列出存储在每个节点上的键时,请避免使用
(除非它只是用于针对本地设置进行测试),而首选。当使用Predis时,迭代器会对
扫描进行抽象,这样您就可以简单地使用标准的
foreach
迭代器数组()

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

foreach ($client as $node) {
    $info = $node->info('keyspace');
    // ...
}
这将适用于redis集群和客户端分片集群。请注意,您已将客户端配置为使用后者,但只有redis CLUSTER才支持
群集信息
(无论如何,您都需要将此命令指向特定节点,因为此命令不带任何键,这意味着Predis无法计算插槽)


当您想要列出存储在每个节点上的键时,请避免使用
(除非它只是用于针对本地设置进行测试),而首选。在使用Predis时,迭代器会对
扫描进行抽象,这样您就可以简单地使用标准的
foreach
迭代器数组()!我没有意识到我可以循环通过$client。仅供参考,由于Predis会话处理程序,我能够使用memcached将我的应用程序从PHP5.6迁移到使用redis的PHP7.x。也谢谢你!太棒了,非常感谢!我没有意识到我可以循环通过$client。仅供参考,由于Predis会话处理程序,我能够使用memcached将我的应用程序从PHP5.6迁移到使用redis的PHP7.x。也谢谢你!