Existe alguma conexão persistente do suporte ao cliente PHP Redis?
-
26-09-2019 - |
Pergunta
Como título, estou procurando um cliente PHP Redis que suporta conexão persistente, porque meu aplicativo da web recebe muitas solicitações (cada solicitação, ele colocará um item na fila Redis) e quero evitar criar uma nova conexão cada solicitação.
Solução
Não tenho certeza se isso é suportado, mas você definitivamente deve olhar para Predis e Rediska, esses dois (especialmente Predis Afaik) são os melhores clientes PHP Redis disponíveis.
Outras dicas
Phpredis Atualmente, suporta conexões persistentes. Usando o PHP 7.0 e o phpredis 3.0, fazendo uma conexão persistente com pconnect()
assim:
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);
}
é cerca de 10 vezes mais rápido (9,6 ms vs 0,83 ms por conexão) do 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: "Esse recurso não está disponível nas versões encadeadas". (Estou executando o IIS no Windows, então executo a versão NTS.)
Predis suporta conexões persistentes usando -o PhpiredisStreamConnection
com o persistent=1
Sintaxe da bandeira 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 suporta conexão persistente. Você só precisa adicionar paramater persistente como 1.
você pode usar o código abaixo
$client = new Predis\Client(array(
'scheme' => 'tcp',
'host' => '127.0.0.1',
'port' => 6379,
'database' => 15,
'persistent'=> 1
));
ao invés de
$client = new Predis\Client('tcp://127.0.0.1:6379?database=15');
Você pode encontrar mais parâmetros para a conexão aqui: https://github.com/nrk/predis/wiki/Connection-parameters
O PHP-Redis suporta conexões persistentes, pois usa uma extensão PHP escrita em C, que lhe confere um mecanismo para compartilhar conexões entre solicitações. Veja a documentação sobre Popen e PCOnect.
Predis não podes Apoie as conexões persistentes porque é 100% PHP e o PHP não compartilha nada entre cada solicitação.