varspool / predisque
基于 Predis 的 Disque 客户端
Requires
- php: >=7.1.0
- predis/predis: >1.0,<2.0
Requires (Dev)
- phpunit/php-invoker: ^1.1
- phpunit/phpunit: ~6.1
- squizlabs/php_codesniffer: ~3.0
This package is auto-updated.
Last update: 2024-09-09 22:33:41 UTC
README
一个基于 Predis (和依赖于 Predis) 的 PHP 7.1+ Disque 客户端。 predis : redis :: predisque : disque
,是的?
该库由以下组成
- 一组命令(如
Predis\Command\Command
),您可以使用这些命令与 Disque 交互,以及一个 Predis 的服务器配置文件 - 一个默认设置端口 7711 和 Disque 服务器配置文件的
Predisque\Client
- 一个聚合连接(
Predisque\Connection\Aggregate\DisqueCluster
),它处理与整个 Disque 集群的通信- 支持通过
HELLO
进行发现 - 如果命令因
ConnectionException
失败则透明地重试命令(因此我们通过切换到另一个节点来处理-LEAVING
响应)
- 支持通过
由于 Predisque 基于功能丰富的 Predis 内核,我们“免费”获得了像管道和底层 Redis 协议的良好支持。(Disque 客户端库可能不应该包含自己的原生 Redis 协议解析器。)
实现了所有 Disque 命令的支持,包括像 DEBUG
、MONITOR
和 CLUSTER INFO
这样奇特的功能。请参阅 TODO.md 了解达到稳定 API 的进度。
尚未稳定,不适合生产使用。
用法
PHP 命名空间是 \Predisque
要创建客户端,实例化一个 new \Predisque\Client(string|array $parameters = [], array $options = [])
。
方法签名类似于 Predis 客户端:连接参数(主机、端口等)首先给出,可以是数组或 DSN/URI 字符串表示法。然后是一组更通用的选项。所以,以下所有都有相同的结果(连接到单个 Disque 服务器)
$client = new \Predisque\Client(); $client = new \Predisque\Client('tcp://127.0.0.1:7711'); $client = new \Predisque\Client([ 'host' => '127.0.0.1', 'port' => 7711 ]);
连接到多个服务器就像传递一个节点详细信息数组一样简单
$client = new \Predisque\Client(['tcp://127.0.0.1:7711', 'tcp://127.0.0.1:7712', 'tcp://127.0.0.1:7713']);
连接切换
一次只能使用这些连接中的一个,但如果第一个服务器的连接失败,或者它给出了 -LEAVING
响应,则将使用其他连接。此外,集群的 HELLO
响应中的详细信息将用于连接到更多的备用节点(因此请确保所有节点都可以被每个客户端访问)。
您可以使用 discover
选项来控制此行为
$client = new \Predisque\Client('tcp://127.0.0.1:7711', ['discover' => false]);
您还可以通过传递 'cluster' => false
选项来禁用所有 Disque 特定的连接特性(以及聚合连接本身)
$client = new \Predisque\Client('tcp://127.0.0.1:7711', ['cluster' => false]);
测试
警告:测试套件使用 DEBUG FLUSHALL
命令。不要针对您关心的 Disque 实例运行测试。 运行测试将销毁它们使用的 disque 实例上的所有数据。(如果您只是将客户端作为 composer 中的分发版使用,则不会有测试。)
要执行测试套件,运行例如 DISQUE_SERVER_PORT=7711 ./vendor/bin/phpunit
- 必须指定端口号,否则将使用无用的默认端口号 12345 以防止意外。