タイトルとして、永続的な接続をサポートするphp Redisクライアントを探しています。これは、Webアプリケーションが多くのリクエストを受信し(リクエストごとに、アイテムがRedisキューに入れられる)、新しい接続の作成を避けたいためです。すべてのリクエスト。
5 に答える
これがサポートされているかどうかはわかりませんが、PredisとRediskaを確認する必要があります。この2つ(特にPredis AFAIK)は、利用可能な最高のPHPRedisクライアントです。
PhpRedisは現在、持続的接続をサポートしています。PHP7.0とPhpRedis3.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);
}
connect()
:よりも約10倍高速です(接続あたり9.6ミリ秒対0.83ミリ秒)
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バージョンを実行します。)
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
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',
),
);
PHP-Redisは、リクエスト間で接続を共有するためのメカニズムを提供するCで記述されたphp拡張機能を使用するため、永続的な接続をサポートします。popenとpconnectのドキュメントをご覧ください。
Predisは100%PHPであり、PHPは各リクエスト間で何も共有しないため、永続的な接続をサポートできません。