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