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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top