Predis — عميل Redis مرن لـ PHP
\n\nRedis هو مخزن بيانات عالي الأداء من نوع "مفتاح-قيمة"، يُستخدم غالبًا للتخزين المؤقت، الجلسات، قوائم الانتظار وتطبيقات الوقت الفعلي. للعمل مع Redis من PHP، توجد عدة مكتبات، واحدة من أشهرها هي Predis. وهو تطبيق كامل لعميل Redis بلغة PHP، لا يتطلب تثبيت إضافات إضافية (على عكس phpredis). يدعم Predis جميع أوامر Redis الأساسية، التجميع، النسخ المتماثل، Pub/Sub والعمل مع المعاملات.
\n\nتثبيت Predis عبر Composer
\n\nيتم تثبيت Predis بالطريقة القياسية عبر Composer. تأكد من تثبيت Composer في مشروعك، ثم نفذ الأمر:
\n\ncomposer require predis/predis\n\nبعد التثبيت، سيظهر التبعية في ملف composer.json، وستكون المكتبة متاحة في مجلد vendor.
الاتصال بخادم Redis
\n\nللبدء، قم بإنشاء نسخة من عميل Predis. افتراضيًا، يتصل بـ 127.0.0.1:6379، ولكن يمكنك تحديد الإعدادات الخاصة بك.
<?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 الأوامر المتعددة (المع