× 警告!旧版文档已经暂停维护,请查看新版文档。点击前往新版文档

Redis\Server

Swoole-1.8.14版本增加一个兼容Redis服务器端协议的Server框架,可基于此框架实现Redis协议的服务器程序。Swoole\Redis\Server继承自Swoole\Server,可调用父类提供的所有方法。

Redis\Server不需要设置onReceive回调。实例程序:https://github.com/swoole/swoole-src/blob/master/examples/redis/server.php

可用的客户端

  • 任意编程语言的redis客户端,包括PHPredis扩展和phpredis
  • Swoole\Coroutine\Redis协程客户端
  • Redis提供的命令行工具,包括redis-cliredis-benchmark

协程

在协程版本中,无法使用return返回值的方式发送响应结果。应当使用$server->send方法发送数据。

use Swoole\Redis\Server;
use Swoole\Coroutine\Redis;

$serv = new Server('0.0.0.0', 10086, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);
$serv->setHandler('set', function ($fd, $data) use ($serv) {
    $cli = new Redis;
    $cli->connect('0.0.0.0', 6379);
    $cli->set($data[0], $data[1]);
    $serv->send($fd, Server::format(Server::INT, 1));
});

$serv->start();

  • 林中侠客

    发送的数据大一点就没法正常接收了,也不知道要怎么调整参数

  • Leslie

    你那是队列中堆积了吧,你要手动限制入队频率,监控队列长度

  • ♀楓→之←傷♂

    报错了,不懂什么情况

    PHP Fatal error: Uncaught Error: Class 'app\index\controller\Swoole_Coroutine_Redis' not found in /home/web/www.thinkphp5.com/application/index/controller/Redis.php:11 Stack trace:

    0 {main}

    thrown in /home/web/www.thinkphp5.com/application/index/controller/Redis.php on line 11 [2019-05-21 16:31:58 $1557.0] WARNING swManager_check_exit_status: worker#0[pid=1559] abnormal exit, status=255, signal=0