परिचय: क्यों कैशिंग तेज़ PHP एप्लिकेशन का आधार है
\n\nप्रत्येक PHP डेवलपर को देर-सबेर प्रदर्शन की समस्या का सामना करना पड़ता है। जब डेटाबेस धीमा होने लगता है और पेज लोड होने में 3-5 सेकंड लगते हैं, तो सबसे पहले जो चीज़ दिमाग में आती है वह है कैशिंग। यह सिर्फ "डेटा को कहीं सहेजना" नहीं है, बल्कि ऑप्टिमाइज़ेशन का एक पूरा दर्शन है।
\n\nइस लेख में, हम PHP में कैशिंग के सभी लोकप्रिय तरीकों को कवर करेंगे: सरल फ़ाइल कैश से लेकर Redis और Memcached जैसे औद्योगिक समाधानों तक। आप सीखेंगे कि सही टूल कैसे चुनें और सामान्य गलतियों से कैसे बचें। चलिए शुरू करते हैं!
\n\n1. PHP में अंतर्निहित कैशिंग तंत्र
\n\n1.1. ऑपकोड कैशिंग: OPcache
\n\nबाहरी स्टोरेज के बारे में बात करने से पहले, यह याद रखना महत्वपूर्ण है कि PHP स्वयं अपने कोड को कैश कर सकता है। OPcache तंत्र संकलित स्क्रिप्ट को RAM में संग्रहीत करता है, जिससे PHP को हर बार फ़ाइलों को पार्स और कंपाइल करने की आवश्यकता नहीं होती है।
\n\nphp.ini में OPcache सक्षम करना:
\n\nopcache.enable=1\nopcache.memory_consumption=128\nopcache.max_accelerated_files=10000\nopcache.revalidate_freq=2\n\nयह रक्षा की पहली पंक्ति है। OPcache के बिना, कोई भी अन्य कैशिंग कम प्रभावी होगी।
\n\n1.2. APCu — मेमोरी में उपयोगकर्ता कैश
\n\nAPCu (Alternative PHP Cache) PHP प्रक्रिया की साझा मेमोरी में मनमाना डेटा संग्रहीत करने के लिए एक एक्सटेंशन है। यह छोटे प्रोजेक्ट्स के लिए आदर्श है जहाँ वितरित कैशिंग की आवश्यकता नहीं होती है।
\n\nAPCu के साथ काम करने का उदाहरण:
\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\n2. Memcached: सरलता और गति
\n\n2.1. Memcached क्या है और इसकी आवश्यकता क्यों है
\n\nMemcached RAM में एक वितरित कैशिंग सिस्टम है। इसे डेटाबेस पर लोड कम करके डायनामिक वेब एप्लिकेशन को गति देने के लिए बनाया गया था। APCu के विपरीत, Memcached एक अलग सर्वर के रूप में काम करता है, जिससे विभिन्न PHP इंस्टेंस कनेक्ट हो सकते हैं।
\n\n2.2. Memcached की स्थापना और कनेक्शन
\n\nपहले Memcached सर्वर स्थापित करें:
\n\nsudo apt install memcached\nsudo systemctl start memcached\n\nफिर PHP एक्सटेंशन स्थापित करें:
\n\nsudo 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\n2.3. Memcached कब चुनें
\n\n- \n
- जब एक सरल key-value स्टोरेज की आवश्यकता हो \n
- जब डेटा का जीवनकाल छोटा हो (सत्र, अस्थायी डेटा) \n
- जब स्थायित्व की आवश्यकता न हो (Memcached डेटा को डिस्क पर सहेजता नहीं है) \n
3. Redis: जटिल परिदृश्यों के लिए शक्तिशाली उपकरण
\n\n3.1. Redis, Memcached से बेहतर क्यों है?
\n\nRedis सिर्फ एक कैश नहीं है, बल्कि जटिल डेटा संरचनाओं के समर्थन के साथ एक पूर्ण in-memory डेटाबेस है: सूचियाँ, सेट, हैश, बिटमैप। Memcached के विपरीत, Redis समर्थन करता है:
\n\n- \n
- स्थायित्व — रीबूट पर डेटा नष्ट नहीं होता \n
- लेन-देन और Lua स्क्रिप्ट \n
- Pub/Sub संदेश आदान-प्रदान के लिए \n
- प्रतिकृति और क्लस्टरिंग \n
3.2. PHP में Redis के साथ काम करने के उदाहरण
\n\nRedis के साथ काम करने के लिए, उपयोग करें