سؤال

كعنوان ، أبحث عن عميل Redis PHP يدعم الاتصال المستمر ، لأن تطبيق الويب الخاص بي يتلقى الكثير من الطلبات (كل طلب ، سيضع عنصرًا في قائمة انتظار Redis) وأريد تجنب إنشاء اتصال جديد كل طلب.

هل كانت مفيدة؟

المحلول

لست متأكدًا مما إذا كان هذا مدعومًا ولكن يجب عليك بالتأكيد النظر إلى Predis و Rediska ، وهما هما (وخاصة Predis AFAIK) هما أفضل عملاء 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 مللي ثانية لكل اتصال) من 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.)

Predis يدعم الاتصالات المستمرة باستخدامه 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',
    ),
);

Predis يدعم الاتصال المستمر. تحتاج فقط إلى إضافة paramater المستمرة مثل 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.

predis لا تستطيع دعم الاتصالات المستمرة لأنها لا تشارك PHP و PHP بنسبة 100 ٪ بين كل طلب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top