عميل Redis لـ PHP: Predis — التثبيت، الاتصال، الأمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Predis — عميل Redis مرن لـ PHP

\n\n

Redis هو مخزن بيانات عالي الأداء من نوع "مفتاح-قيمة"، يُستخدم غالبًا للتخزين المؤقت، الجلسات، قوائم الانتظار وتطبيقات الوقت الفعلي. للعمل مع Redis من PHP، توجد عدة مكتبات، واحدة من أشهرها هي Predis. وهو تطبيق كامل لعميل Redis بلغة PHP، لا يتطلب تثبيت إضافات إضافية (على عكس phpredis). يدعم Predis جميع أوامر Redis الأساسية، التجميع، النسخ المتماثل، Pub/Sub والعمل مع المعاملات.

\n\n

تثبيت Predis عبر Composer

\n\n

يتم تثبيت Predis بالطريقة القياسية عبر Composer. تأكد من تثبيت Composer في مشروعك، ثم نفذ الأمر:

\n\n
composer require predis/predis
\n\n

بعد التثبيت، سيظهر التبعية في ملف composer.json، وستكون المكتبة متاحة في مجلد vendor.

\n\n

الاتصال بخادم Redis

\n\n

للبدء، قم بإنشاء نسخة من عميل Predis. افتراضيًا، يتصل بـ 127.0.0.1:6379، ولكن يمكنك تحديد الإعدادات الخاصة بك.

\n\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Predis\\Client;\n\n// اتصال بالإعدادات الافتراضية\n$client = new Client();\n\n// أو مع تحديد المضيف والمنفذ بشكل صريح\n$client = new Client([\n    'scheme' => 'tcp',\n    'host'   => '127.0.0.1',\n    'port'   => 6379,\n]);\n\n// إذا كانت هناك حاجة لكلمة مرور\n$client = new Client([\n    'host' => 'localhost',\n    'port' => 6379,\n    'password' => 'my_secret_password',\n]);\n?>
\n\n

إذا كان Redis يعمل على خادم بعيد أو يستخدم مقبس UNIX، فما عليك سوى تغيير المعلمات المقابلة.

\n\n

العمليات الأساسية مع البيانات

\n\n

يدعم Predis جميع أنواع بيانات Redis القياسية: السلاسل، التجزئات، القوائم، المجموعات والمجموعات المرتبة. دعنا نستعرض الأمثلة الأساسية.

\n\n

العمل مع السلاسل

\n\n
<?php\n// تعيين قيمة\n$client->set('user:100:name', 'إيفان بيتروف');\n\n// الحصول على قيمة\n$name = $client->get('user:100:name');\necho $name; // إيفان بيتروف\n\n// التحقق من وجود المفتاح\nif ($client->exists('user:100:name')) {\n    echo 'المفتاح موجود';\n}\n\n// حذف المفتاح\n$client->del(['user:100:name']);\n?>
\n\n

العمل مع التجزئات

\n\n

التجزئات مفيدة لتخزين الكائنات — مثل بيانات المستخدم.

\n\n
<?php\n// تعيين حقول التجزئة\n$client->hmset('user:100', [\n    'name'  => 'آنا سميرنوفا',\n    'email' => 'anna@example.com',\n    'age'   => 28,\n]);\n\n// الحصول على حقل واحد\n$email = $client->hget('user:100', 'email');\n\n// الحصول على جميع الحقول\n$userData = $client->hgetall('user:100');\nprint_r($userData);\n\n// زيادة حقل رقمي\n$client->hincrby('user:100', 'age', 1);\n?>
\n\n

العمل مع القوائم

\n\n

قوائم Redis مثالية لقوائم الانتظار والسجلات.

\n\n
<?php\n// إضافة عناصر إلى بداية القائمة (مكدس)\n$client->lpush('tasks', 'task1', 'task2', 'task3');\n\n// إضافة إلى نهاية القائمة (قائمة انتظار)\n$client->rpush('tasks', 'task4');\n\n// الحصول على جميع عناصر القائمة\n$allTasks = $client->lrange('tasks', 0, -1);\nprint_r($allTasks);\n\n// استخراج العنصر الأول\n$first = $client->lpop('tasks');\necho $first; // task3\n?>
\n\n

تعيين وقت حياة المفتاح (TTL)

\n\n

إحدى الإمكانيات القوية لـ Redis هي الحذف التلقائي للمفاتيح بعد وقت محدد. يُستخدم هذا غالبًا للتخزين المؤقت.

\n\n
<?php\n// تعيين مفتاح مع TTL لمدة 60 ثانية\n$client->setex('cache:page', 60, 'محتوى HTML للصفحة');\n\n// أو لمفتاح موجود بالفعل\n$client->expire('cache:page', 120);\n\n// التحقق من الوقت المتبقي للحياة\n$ttl = $client->ttl('cache:page');\necho "بقي $ttl ثانية";\n?>
\n\n

العمل مع المعاملات

\n\n

يدعم Predis الأوامر المتعددة (المع

توصيات