Predis — PHP के लिए लचीला Redis क्लाइंट
Redis एक हाई-परफॉर्मेंस की-वैल्यू डेटा स्टोर है, जिसका उपयोग कैशिंग, सेशन, क्यू और real-time एप्लिकेशन के लिए किया जाता है। PHP से Redis के साथ काम करने के लिए कई लाइब्रेरी उपलब्ध हैं, और उनमें से सबसे लोकप्रिय है Predis। यह पूरी तरह से PHP में लिखा गया क्लाइंट है, जिसे किसी अतिरिक्त एक्सटेंशन (जैसे phpredis) की आवश्यकता नहीं होती। Predis सभी मुख्य Redis कमांड, क्लस्टरिंग, रेप्लिकेशन, Pub/Sub और ट्रांजैक्शन को सपोर्ट करता है।
Composer के माध्यम से Predis इंस्टॉल करना
Predis को Composer के मानक तरीके से इंस्टॉल किया जाता है। सुनिश्चित करें कि आपके प्रोजेक्ट में Composer इंस्टॉल है, और फिर यह कमांड चलाएं:
composer require predis/predis
इंस्टॉलेशन के बाद composer.json फ़ाइल में डिपेंडेंसी जुड़ जाएगी, और लाइब्रेरी vendor फ़ोल्डर में उपलब्ध होगी।
Redis सर्वर से कनेक्शन
शुरू करने के लिए, Predis क्लाइंट का एक इंस्टेंस बनाएं। डिफ़ॉल्ट रूप से यह 127.0.0.1:6379 से कनेक्ट होता है, लेकिन आप अपने पैरामीटर सेट कर सकते हैं।
<?php
require 'vendor/autoload.php';
use Predis\Client;
// डिफ़ॉल्ट पैरामीटर के साथ कनेक्शन
$client = new Client();
// या होस्ट और पोर्ट स्पष्ट रूप से निर्दिष्ट करके
$client = new Client([
'scheme' => 'tcp',
'host' => '127.0.0.1',
'port' => 6379,
]);
// अगर पासवर्ड की आवश्यकता हो
$client = new Client([
'host' => 'localhost',
'port' => 6379,
'password' => 'my_secret_password',
]);
?>
अगर Redis किसी रिमोट सर्वर पर चल रहा है या UNIX-सॉकेट का उपयोग करता है, तो बस संबंधित पैरामीटर बदल दें।
डेटा के साथ बुनियादी ऑपरेशन
Predis सभी मानक Redis डेटा प्रकारों को सपोर्ट करता है: स्ट्रिंग्स, हैशेज़, लिस्ट्स, सेट्स और सॉर्टेड सेट्स। आइए बुनियादी उदाहरण देखें।
स्ट्रिंग्स के साथ काम करना
<?php
// वैल्यू सेट करें
$client->set('user:100:name', 'राहुल शर्मा');
// वैल्यू प्राप्त करें
$name = $client->get('user:100:name');
echo $name; // राहुल शर्मा
// की के अस्तित्व की जाँच करें
if ($client->exists('user:100:name')) {
echo 'की मौजूद है';
}
// की को हटाएं
$client->del(['user:100:name']);
?>
हैशेज़ के साथ काम करना
हैशेज़ ऑब्जेक्ट्स को स्टोर करने के लिए उपयोगी हैं — जैसे उपयोगकर्ता डेटा।
<?php
// हैश के फ़ील्ड सेट करें
$client->hmset('user:100', [
'name' => 'प्रिया सिंह',
'email' => 'priya@example.com',
'age' => 28,
]);
// एक फ़ील्ड प्राप्त करें
$email = $client->hget('user:100', 'email');
// सभी फ़ील्ड प्राप्त करें
$userData = $client->hgetall('user:100');
print_r($userData);
// संख्यात्मक फ़ील्ड बढ़ाएं
$client->hincrby('user:100', 'age', 1);
?>
लिस्ट्स के साथ काम करना
Redis लिस्ट्स क्यू और लॉग के लिए एकदम सही हैं।
<?php
// लिस्ट की शुरुआत में एलिमेंट जोड़ें (स्टैक)
$client->lpush('tasks', 'task1', 'task2', 'task3');
// लिस्ट के अंत में जोड़ें (क्यू)
$client->rpush('tasks', 'task4');
// लिस्ट के सभी एलिमेंट प्राप्त करें
$allTasks = $client->lrange('tasks', 0, -1);
print_r($allTasks);
// पहला एलिमेंट निकालें
$first = $client->lpop('tasks');
echo $first; // task3
?>
की का समय-सीमा (TTL) सेट करना
Redis की एक शक्तिशाली विशेषता है — निर्धारित समय के बाद की को स्वचालित रूप से हटाना। इसका उपयोग अक्सर कैशिंग के लिए किया जाता है।
<?php
// 60 सेकंड TTL के साथ की सेट करें
$client->setex('cache:page', 60, 'पेज का HTML कंटेंट');
// या पहले से मौजूद की के लिए
$client->expire('cache:page', 120);
// बचा हुआ समय जाँचें
$ttl = $client->ttl('cache:page');
echo "$ttl सेकंड बाकी हैं";
?>
ट्रांजैक्शन के साथ काम करना
Predis MULTI और EXEC के माध्यम से मल्टी-कमांड (ट्रांजैक्शन) को सपोर्ट करता है। यह कमांड के समूह के परमाणु निष्पादन की गारंटी देता है।