10

作为标题,我正在寻找一个支持持久连接的 php Redis 客户端,因为我的 Web 应用程序接收到很多请求(每个请求,它都会将一个项目放入 Redis 队列)并且我想避免创建新连接每一个请求。

4

5 回答 5

7

不确定这是否受支持,但您绝对应该看看 Predis 和 Rediska,这两个(尤其是 Predis AFAIK)是可用的最好的 PHP Redis 客户端。

于 2010-09-02T11:34:40.173 回答
4

PhpRedis目前支持持久连接。使用 PHP 7.0 和 PhpRedis 3.0,pconnect()像这样建立持久连接:

for ($i=0;$i<1000;$i++) {
    $redis = new Redis();
    $result = $redis->pconnect('127.0.0.1'); 
    $redis->set("iterator",$i);
    $response=$redis->get("iterator");
    $redis->close();
    unset($redis);
}

大约比以下速度快 10 倍(每个连接 9.6 毫秒 vs 0.83 毫秒)connect()

for ($i=0;$i<1000;$i++) {
    $redis = new Redis();
    $result = $redis->connect('127.0.0.1'); 
    $redis->set("iterator",$i);
    $response=$redis->get("iterator");
    $redis->close();
    unset($redis); 
}

注意:“此功能在线程版本中不可用”。(我在 Windows 的 IIS 下运行,所以我运行的是 NTS 版本。)

于 2016-09-19T19:19:26.367 回答
2

Predis 支持持久连接。您只需要将持久参数添加为 1。

你可以使用下面的代码

$client = new Predis\Client(array(
   'scheme'    => 'tcp',
   'host'      => '127.0.0.1',
   'port'      => 6379,
   'database'  => 15,
   'persistent'=> 1
));

代替

$client = new Predis\Client('tcp://127.0.0.1:6379?database=15');

你可以在这里找到更多的连接参数: https ://github.com/nrk/predis/wiki/Connection-Parameters

于 2017-07-24T12:55:25.357 回答
0

Predis 从 v0.8.0 开始支持使用PhpiredisStreamConnection带有persistent=1标志语法的持久连接:

<?php
$client = new Predis\Client('tcp://127.0.0.1?persistent=1', array(
    'connections' => array(
        'tcp'  => 'Predis\Connection\PhpiredisStreamConnection',
        'unix' => 'Predis\Connection\PhpiredisStreamConnection',
    ),
);
于 2014-02-24T00:21:02.213 回答
-2

PHP-Redis 支持持久连接,因为它使用用 C 编写的 php 扩展,它提供了一种在请求之间共享连接的机制。查看有关popen 和 pconnect的文档。

Predis支持持久连接,因为它是 100% PHP 并且 PHP 在每个请求之间不共享任何内容。

于 2011-01-28T19:52:08.563 回答