任意のPHP Redisのクライアントのサポート、永続的な接続はありますか?
-
26-09-2019 - |
質問
私のWebアプリケーションが要求(それぞれの要求は、それはRedisのキューへの項目を入れましょう)の多くを受け取るので、タイトルとして、私は、持続的接続をサポートするPHPのRedisクライアントを探していると私は避けたいですすべての要求を新しい接続を作成します。
解決
わからない、これはサポートされていますが、間違いなくこの2つの(特にPredis私の知る限りは)最高のPHP Redisのクライアントが利用可能な、PredisとRediskaを見なければならない場合ます。
他のヒント
PhpRedis の現在の永続的な接続をサポートしています。
pconnect()
するとの永続的な接続を行う、PHP 7.0とPhpRedis 3.0を使用して>
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);
}
注:「この機能は、スレッドのバージョンでは使用できません」。 (私はNTSバージョンを実行するので、私は、Windows上でIISの下で実行しているよ。)
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',
),
);
Predisは、永続的な接続をサポートしています。あなただけの1のような永続的なのparamaterを追加する必要があります。
は、
以下のコードを使用することができます$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
PHP-Redisのは、持続的接続をサポートしています。 のpopenとpconnectするます。
上のドキュメントを参照Predis <私>できませんのそれは各リクエストの間に100%PHPとPHPを共有するものではありませんので、持続的な接続をサポートしています。