gorbunov/predis-async

Predis 的异步版本

此软件包的官方仓库似乎已不存在,因此该软件包已被冻结。

0.3.0 2018-12-09 08:40 UTC

This package is not auto-updated.

Last update: 2021-05-25 01:41:47 UTC


README

Software license Latest stable Latest development Monthly installs Build status HHVM support

注意:我们制作了这个副本,因为原始仓库已被放弃。安装:composer require adamasantares/predis-async

Predis的异步(非阻塞)版本,是一个全功能的PHP客户端库,用于Redis,建立在React之上,用于处理基于事件I/O。默认情况下,Predis\Async不需要任何额外的C扩展即可工作,但它可以选择性地与phpiredis一起使用,以合理地降低序列化和解析Redis协议的开销。

Predis\Async目前正在开发中,但已经表现得相当不错。客户端基础正在建立在React提供的事件循环抽象之上,React是一个面向PHP的事件驱动框架,旨在提供创建可重用库和长时间运行应用程序所需的一切,这些应用程序使用由非阻塞I/O提供动力的基于事件的方法。此库在HHVM上进行了部分测试,但应将对此运行时的支持视为实验性的。

欢迎并感谢贡献,如果您遇到奇怪的行为和明显的错误,请随意报告问题

主要功能

  • 支持广泛的Redis版本(从 2.03.0 和不稳定版本)使用配置文件。
  • 对所有已知Redis命令使用可定制的策略进行透明键前缀。
  • 对Redis >= 2.0的 MULTI / EXEC 事务的抽象。
  • 对Redis >= 2.0的 PUBLISH / SUBSCRIBE 上下文的抽象。
  • 对Redis >= 1.2的 MONITOR 上下文的抽象。
  • 对Redis >= 2.6的Lua脚本的抽象。
  • 可以通过TCP/IP或UNIX域套接字连接到Redis。
  • Redis连接可以懒加载,在客户端连接时命令将被排队。
  • 灵活的系统用于定义和注册支持命令或配置文件的自定义集合。

安装

Predis\Async可在Packagist上找到。不需要加载phpiredis扩展,因为客户端将使用纯PHP协议解析器继续工作,但如果在运行时检测到扩展,则将自动优先于较慢的默认选项。可以通过在客户端选项数组中传递['phpiredis' => false]来强制客户端使用纯PHP协议解析器,即使检测到扩展也是如此。

示例

<?php
require __DIR__.'/../autoload.php';

$loop = new React\EventLoop\StreamSelectLoop();
$client = new Predis\Async\Client('tcp://127.0.0.1:6379', $loop);

$client->connect(function ($client) use ($loop) {
    echo "Connected to Redis, now listening for incoming messages...\n";

    $logger = new Predis\Async\Client('tcp://127.0.0.1:6379', $loop);

    $client->pubSubLoop('nrk:channel', function ($event) use ($logger) {
        $logger->rpush("store:{$event->channel}", $event->payload, function () use ($event) {
            echo "Stored message `{$event->payload}` from {$event->channel}.\n";
        });
    });
});

$loop->run();

与Predis的区别

作为异步客户端实现,Predis\Async 的底层设计不同于 Predis(一个阻塞实现)。某些功能尚未实现(或根本无法实现),例如,您将找不到用于命令管道化和使用客户端分片创建节点集群的常规抽象。话虽如此,它们共享相同的风格和几个基本类,所以如果您以前使用过 Predis,应该会感到很熟悉。

贡献

如果您想为 Predis\Async 工作,强烈建议您首先运行测试套件,以检查一切是否正常,并报告异常行为或错误。在修改代码时,请确保在您的开发环境中以 error_reporting 变量设置为 E_ALL | E_STRICT 的解释器运行,以确保 PHP 不发出警告或通知。

为 Predis\Async 贡献的推荐方式是在 GitHub 上创建项目的分支,在您新创建的存储库中创建新的主题分支来修复或添加功能(可能包括覆盖您修改的测试),然后提交一个新的拉取请求,并描述应用了哪些更改。显然,您可以使用任何您偏好的其他 Git 托管提供商。

在提交拉取请求之前,请遵循一些基本的 提交指南

项目

作者

许可

Predis\Async 的代码在 MIT 许可证的条款下分发(见 LICENSE)。