Есть ли какие-либо клиент PHP Redis Client поддерживает постоянное соединение?

StackOverflow https://stackoverflow.com/questions/3614948

  •  26-09-2019
  •  | 
  •  

Вопрос

Как название, я ищу клиента PHP Redis, который поддерживает постоянное соединение, потому что мое веб-приложение получает много запросов (каждый запрос, он поставит элемент в очередь redis), и я хочу избежать создания нового соединения каждый запрос.

Это было полезно?

Решение

Не уверены, если это поддерживается, но вы обязательно должны посмотреть на предис и редиску, это два (особенно предска AFAIK) - лучшие клиенты PHP Redis.

Другие советы

Phpredis. В настоящее время поддерживает постоянные связи. Использование PHP 7.0 и phpredis 3.0, сделав постоянное соединение с pconnect() так:

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

в 10 раз быстрее (9,6 мсек против 0,83 msec на соединение), чем 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); 
}

Примечание: «Эта функция недоступна в резьбовых версиях». (Я работаю под IIS в Windows, поэтому я запускаю версию NTS.)

Предсы поддерживают постоянные соединения, используя его PhpiredisStreamConnection с persistent=1 Флаг синтаксис с 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.

Вы можете использовать код ниже

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

вместо

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

Вы можете найти больше параметров для подключения здесь: https://github.com/nrk/predis/wiki/Connection-Parameters

PHP-Redis поддерживает постоянные соединения, поскольку он использует расширение PHP, записанное в C, которое дает ему механизм для совместного использования соединений между запросами. Посмотрите на документацию на Popen и PConnect.

Предисы не можем Поддержите постоянные соединения, потому что это 100% PHP, а PHP ничего неделятся между каждым запросом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top