Domanda

Come il titolo, sto cercando un client Redis PHP che supporta la connessione persistente, perché la mia applicazione web riceve un sacco di richieste (ogni richiesta, che sarà messo su un elemento alla coda Redis) e voglio evitare creare nuova connessione ogni richiesta.

È stato utile?

Soluzione

Non so se questo è supportato, ma si dovrebbe assolutamente guardare Predis e Rediska, questa due (soprattutto Predis AFAIK) sono i migliori clienti PHP Redis disponibili.

Altri suggerimenti

PhpRedis attualmente supporta le connessioni persistenti. Utilizzo di PHP 7.0 e 3.0 PhpRedis, effettuare una connessione persistente con pconnect() in questo modo:

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

è di circa 10 volte più veloce (9.6 msec vs 0.83 msec per connessione) rispetto 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: "Questa funzione non è disponibile nelle versioni filettate". (Sto correndo in IIS su Windows, in modo da eseguire la versione NTS).

Predis supporta le connessioni persistenti usando il suo PhpiredisStreamConnection con la sintassi persistent=1 bandiera dal 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 supporta la connessione persistente. basta aggiungere paramater persistente come 1.

è possibile utilizzare il codice seguente

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

anziché

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

è possibile trovare ulteriori parametri per la connessione qui:   https://github.com/nrk/predis/wiki/Connection-Parameters

PHP-Redis supporta le connessioni persistenti in quanto utilizza un'estensione PHP scritto in C che gli conferisce un meccanismo per la condivisione di connessioni tra le richieste. Guardate la documentazione sul popen e pconnect .

Predis non possono supportare le connessioni persistenti, perché è al 100% di azioni PHP e PHP nulla tra ogni richiesta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top