c'è qualche php Redis supporto client connessione persistente?
-
26-09-2019 - |
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.
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.