Question

Comme le titre, je suis à la recherche d'un client php Redis qui prennent en charge la connexion persistante, parce que mon application Web reçoit beaucoup de demandes (chaque demande, il va mettre un élément dans la file d'attente Redis) et je veux éviter créer une nouvelle connexion à chaque demande.

Était-ce utile?

La solution

Je ne sais pas si cela est pris en charge, mais vous devriez vraiment regarder à Predis et Rediska, ce deux (en particulier Predis AFAIK) sont les meilleurs clients PHP Redis disponibles.

Autres conseils

PhpRedis prend actuellement en charge les connexions persistantes. En utilisant PHP 7.0 et 3.0 PhpRedis, ce qui rend une connexion persistante avec pconnect() comme ceci:

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

est environ 10 fois plus rapide (9,6 msec vs 0,83 msec par connexion) 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); 
}

Note: « Cette fonction n'est pas disponible dans les versions filetées ». (Je suis en cours d'exécution sous IIS sous Windows, donc je lance la version NTS.)

Predis supporte les connexions persistantes à l'aide de ce PhpiredisStreamConnection avec la syntaxe de drapeau persistent=1 depuis 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 prend en charge une connexion persistante. vous avez juste besoin d'ajouter paramater persistante comme 1.

vous pouvez utiliser le code ci-dessous

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

au lieu de

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

vous pouvez trouver plus de paramètres pour la connexion ici:   https://github.com/nrk/predis/wiki/Connection-Parameters

PHP-Redis prend en charge les connexions persistantes car il utilise une extension PHP écrit en C qui lui donne un mécanisme de partage des connexions entre les requêtes. Regardez la documentation sur popen et pconnect .

Predis ne peut pas en charge les connexions persistantes, car il est de 100% des actions PHP et PHP rien entre chaque demande.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top