Есть ли какие-либо клиент PHP Redis Client поддерживает постоянное соединение?
-
26-09-2019 - |
Вопрос
Как название, я ищу клиента PHP Redis, который поддерживает постоянное соединение, потому что мое веб-приложение получает много запросов (каждый запрос, он поставит элемент в очередь redis), и я хочу избежать создания нового соединения каждый запрос.
Решение
Не уверены, если это поддерживается, но вы обязательно должны посмотреть на предис и редиску, это два (особенно предска AFAIK) - лучшие клиенты PHP Redis.
Другие советы
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 мсек против 0,83 msec на соединение), чем 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);
}
Примечание: «Эта функция недоступна в резьбовых версиях». (Я работаю под IIS в Windows, поэтому я запускаю версию NTS.)
Предсы поддерживают постоянные соединения, используя его PhpiredisStreamConnection
с persistent=1
Флаг синтаксис с V0.8.0:
<?php
$client = new Predis\Client('tcp://127.0.0.1?persistent=1', array(
'connections' => array(
'tcp' => 'Predis\Connection\PhpiredisStreamConnection',
'unix' => 'Predis\Connection\PhpiredisStreamConnection',
),
);
Предсес поддерживает постоянное соединение. Вам просто нужно добавить постоянный параметр как 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
PHP-Redis поддерживает постоянные соединения, поскольку он использует расширение PHP, записанное в C, которое дает ему механизм для совместного использования соединений между запросами. Посмотрите на документацию на Popen и PConnect.
Предисы не можем Поддержите постоянные соединения, потому что это 100% PHP, а PHP ничего неделятся между каждым запросом.