PHP में कैशिंग: Redis, Memcached और अंतर्निहित समाधान: A से Z तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: क्यों कैशिंग तेज़ PHP एप्लिकेशन का आधार है

\n\n

प्रत्येक PHP डेवलपर को देर-सबेर प्रदर्शन की समस्या का सामना करना पड़ता है। जब डेटाबेस धीमा होने लगता है और पेज लोड होने में 3-5 सेकंड लगते हैं, तो सबसे पहले जो चीज़ दिमाग में आती है वह है कैशिंग। यह सिर्फ "डेटा को कहीं सहेजना" नहीं है, बल्कि ऑप्टिमाइज़ेशन का एक पूरा दर्शन है।

\n\n

इस लेख में, हम PHP में कैशिंग के सभी लोकप्रिय तरीकों को कवर करेंगे: सरल फ़ाइल कैश से लेकर Redis और Memcached जैसे औद्योगिक समाधानों तक। आप सीखेंगे कि सही टूल कैसे चुनें और सामान्य गलतियों से कैसे बचें। चलिए शुरू करते हैं!

\n\n

1. PHP में अंतर्निहित कैशिंग तंत्र

\n\n

1.1. ऑपकोड कैशिंग: OPcache

\n\n

बाहरी स्टोरेज के बारे में बात करने से पहले, यह याद रखना महत्वपूर्ण है कि PHP स्वयं अपने कोड को कैश कर सकता है। OPcache तंत्र संकलित स्क्रिप्ट को RAM में संग्रहीत करता है, जिससे PHP को हर बार फ़ाइलों को पार्स और कंपाइल करने की आवश्यकता नहीं होती है।

\n\n

php.ini में OPcache सक्षम करना:

\n\n
opcache.enable=1\nopcache.memory_consumption=128\nopcache.max_accelerated_files=10000\nopcache.revalidate_freq=2
\n\n

यह रक्षा की पहली पंक्ति है। OPcache के बिना, कोई भी अन्य कैशिंग कम प्रभावी होगी।

\n\n

1.2. APCu — मेमोरी में उपयोगकर्ता कैश

\n\n

APCu (Alternative PHP Cache) PHP प्रक्रिया की साझा मेमोरी में मनमाना डेटा संग्रहीत करने के लिए एक एक्सटेंशन है। यह छोटे प्रोजेक्ट्स के लिए आदर्श है जहाँ वितरित कैशिंग की आवश्यकता नहीं होती है।

\n\n

APCu के साथ काम करने का उदाहरण:

\n\n
<?php\n// डेटा को 5 मिनट के लिए सहेजें\napcu_store('my_key', ['data' => 'value'], 300);\n\n// डेटा पढ़ें\n$data = apcu_fetch('my_key');\nif ($data === false) {\n    echo "कैश नहीं मिला, पुनः जनरेट कर रहे हैं";\n}\n\n// कुंजी हटाएं\napcu_delete('my_key');\n?>
\n\n

लाभ: बिजली की गति, सरलता। नुकसान: डेटा केवल एक सर्वर के दायरे में रहता है।

\n\n

2. Memcached: सरलता और गति

\n\n

2.1. Memcached क्या है और इसकी आवश्यकता क्यों है

\n\n

Memcached RAM में एक वितरित कैशिंग सिस्टम है। इसे डेटाबेस पर लोड कम करके डायनामिक वेब एप्लिकेशन को गति देने के लिए बनाया गया था। APCu के विपरीत, Memcached एक अलग सर्वर के रूप में काम करता है, जिससे विभिन्न PHP इंस्टेंस कनेक्ट हो सकते हैं।

\n\n

2.2. Memcached की स्थापना और कनेक्शन

\n\n

पहले Memcached सर्वर स्थापित करें:

\n\n
sudo apt install memcached\nsudo systemctl start memcached
\n\n

फिर PHP एक्सटेंशन स्थापित करें:

\n\n
sudo pecl install memcached
\n\n

अब कैश के साथ काम करें:

\n\n
<?php\n$memcached = new Memcached();\n$memcached->addServer('localhost', 11211);\n\n// 10 मिनट के लिए सहेजें\n$memcached->set('user_123', ['name' => 'इवान', 'email' => 'ivan@example.com'], 600);\n\n// पढ़ें\n$user = $memcached->get('user_123');\nif ($user === false) {\n    // डेटाबेस से लोड करें\n}\n?>
\n\n

2.3. Memcached कब चुनें

\n\n
    \n
  • जब एक सरल key-value स्टोरेज की आवश्यकता हो
  • \n
  • जब डेटा का जीवनकाल छोटा हो (सत्र, अस्थायी डेटा)
  • \n
  • जब स्थायित्व की आवश्यकता न हो (Memcached डेटा को डिस्क पर सहेजता नहीं है)
  • \n
\n\n

3. Redis: जटिल परिदृश्यों के लिए शक्तिशाली उपकरण

\n\n

3.1. Redis, Memcached से बेहतर क्यों है?

\n\n

Redis सिर्फ एक कैश नहीं है, बल्कि जटिल डेटा संरचनाओं के समर्थन के साथ एक पूर्ण in-memory डेटाबेस है: सूचियाँ, सेट, हैश, बिटमैप। Memcached के विपरीत, Redis समर्थन करता है:

\n\n
    \n
  • स्थायित्व — रीबूट पर डेटा नष्ट नहीं होता
  • \n
  • लेन-देन और Lua स्क्रिप्ट
  • \n
  • Pub/Sub संदेश आदान-प्रदान के लिए
  • \n
  • प्रतिकृति और क्लस्टरिंग
  • \n
\n\n

3.2. PHP में Redis के साथ काम करने के उदाहरण

\n\n

Redis के साथ काम करने के लिए, उपयोग करें

ब्लॉग

पुस्तक अनुशंसाएँ