Pregunta

Como el título, estoy buscando para un cliente Redis php que admite la conexión persistente, porque mi aplicación web recibe una gran cantidad de peticiones (cada solicitud, se va a poner un elemento en la cola a Redis) y yo quiero evitar crear una nueva conexión cada petición.

¿Fue útil?

Solución

No estoy seguro si esto es apoyado, pero además se debería mirar Predis y Rediska, esta dos (especialmente Predis yo sepa) son los mejores clientes PHP Redis disponible.

Otros consejos

PhpRedis actualmente soporta conexiones persistentes. Uso de PHP 7.0 y PhpRedis 3,0, haciendo una conexión persistente con pconnect() como esto:

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);
}

es aproximadamente 10 veces más rápido (9,6 mseg vs 0,83 mseg por conexión) que 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); 
}

Nota: "Esta función no está disponible en versiones de rosca". (Estoy corriendo bajo IIS en Windows, por lo que ejecutar la versión NTS).

Predis soporta conexiones persistentes utilizando su PhpiredisStreamConnection con la sintaxis de la bandera persistent=1 desde 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',
    ),
);

Predis soporta la conexión persistente. sólo tiene que añadir parámetro de persistencia como 1.

Puede utilizar el siguiente código

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

en lugar de

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

Puede encontrar más parámetros para la conexión aquí:   https://github.com/nrk/predis/wiki/Connection-Parameters

PHP-Redis soporta conexiones persistentes ya que utiliza una extensión de PHP escrito en C que le da un mecanismo para compartir conexiones entre solicitudes. Vistazo a la documentación de popen y pconnect .

Predis no pueden apoyar las conexiones persistentes, ya que es 100% acciones de PHP y PHP nada entre cada solicitud.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top