10
votes

Existe-t-il une connexion PHP Redis CLIENT Connexion persistante?

comme le titre, je recherche un client PHP Redis qui prenant en charge la connexion persistante, car mon application Web reçoit beaucoup de demandes (chaque demande, elle mettra un article dans Redis Filee) et je souhaite éviter Créez une nouvelle connexion chaque demande.


0 commentaires

5 Réponses :


7
votes

Je ne sais pas si cela est pris en charge, mais vous devriez certainement regarder les PREDIS et REDISKA, ces deux (surtout AFAIK) sont les meilleurs clients PHP Redis disponibles.


4 commentaires

Merci Antirez, je n'ai jamais essayé de prédis auparavant, il semblerait appuyer un lien persistant, je pense qu'une implémentation C en tant que module PHP devrait être plus rapide, mais je vais les essayer et prendre une comparaison.


La préoccupation est de savoir si les PREDIS prend en charge les connexions persistantes car il s'agit d'une implémentation purement PHP et non d'une extension basée sur C. Selon le responsable, les PREDIS prennent en charge les connexions persistantes si vos processus PHP sont configurés pour rester résident. Ceci est typique sur une configuration de PHP + Apache de production sérieuse, bien que votre installation particulière puisse varier et peut nécessiter une certaine configuration. Le Predis FAQ souligne que les connexions sont persistantes lorsque les prédis sont persistants et Les processus PHP sont recyclés pour les demandes.


Disclaimer: Je n'ai pas encore testé les prédis. J'essaie d'abord l'extension C puisque les prédis cherchent à être construits à l'aide d'un style très verbeux. Je n'aime pas non plus en s'appuyer sur les mécanismes d'autoload de PHP.


Phpredis aurait beaucoup beaucoup plus vite que les prédis



-2
votes

PHP-REDIS prend en charge les connexions persistantes car elle utilise une extension PHP écrite dans C, ce qui lui confère un mécanisme de partage des connexions entre les demandes. Regardez la documentation sur popen et pconnect .

Predis ne peut pas Soutenir les connexions persistantes car il est 100% PHP et PHP ne partage rien entre chaque demande.


2 commentaires

Selon l'auteur Predis, cette réponse est incorrecte. Il affirme que les demandes PHP peuvent partager des informations lorsque les processus PHP sont configurés pour rester résident entre les demandes, comme c'est le cas avec de nombreuses implémentations.


D'accord, cette réponse est fausse. Popen () est le mauvais type de ressource de toute façon (processus pipé P ==). PConnect () est entièrement capable de prendre en charge la gestion des ressources internes "XPORT" de Zend qui permettent de maintenir des connexions persistantes. Predis elle-même utilise stream_socket_client () , avec un optionnel stream_client_persistent drapeau. Lorsque le processus PHP est maintenu par quelque chose comme Apache avec un pool de procédés / fils de backend, ces connexions persistantes survivent dans la durée de vie du backend.



0
votes

Predis prend en charge les connexions persistantes à l'aide de son phpiredisstreamconnection code> avec le Persistant = 1 code> Syntaxe de drapeau 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',
    ),
);


1 commentaires

J'ai ajouté persistant = 1 avec une connexion de flux phpiredis et on dirait que je reçois toujours la même prise de la prise du même temps.



4
votes

Phpredis prend actuellement en charge les connexions persistantes. Utilisation de PHP 7.0 et PHPREDIS 3.0, rendant une connexion persistante avec pconnect () < / a> comme ceci: xxx

est environ 10 fois plus rapide (9,6 ms à 0,83 msec par connexion) que connect () : xxx

note:" Cette fonction n'est pas disponible dans les versions filetées ". (Je cours sous IIS sous Windows, donc j'exécute la version NTS.)


0 commentaires

2
votes

Predis prend en charge la connexion persistante. Il vous suffit d'ajouter un paramètre persistant comme 1.

Vous pouvez utiliser le code ci-dessous xxx

au lieu de xxx

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


0 commentaires