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

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

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

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

PHP में कैशिंग: Redis, Memcached और अंतर्निहित समाधान — वेब एप्लिकेशन को गति देना



प्रत्येक PHP डेवलपर प्रदर्शन की समस्या का सामना करता है: डेटाबेस धीमी गति से प्रतिक्रिया करता है, पेज लोड होने में अधिक समय लगता है, और सर्वर लोड के तहत दम तोड़ देता है। इन समस्याओं का समाधान उचित कैशिंग में निहित है। इस लेख में, हम PHP में कैशिंग के तीन मुख्य दृष्टिकोणों पर चर्चा करेंगे: अंतर्निहित तंत्र (APCu, OpCache), बाहरी सर्वर Memcached और Redis। आप जानेंगे कि कब कौन सा उपकरण चुनना है, और कार्यान्वयन के लिए तैयार कोड उदाहरण प्राप्त करेंगे।



1. अंतर्निहित समाधान: OpCache और APCu



सबसे सरल से शुरू करते हैं — PHP इंजन स्तर पर कैशिंग। यहाँ दो प्रमुख घटक हैं।



1.1. OpCache (PHP opcode cache)

OpCache PHP संस्करण 5.5 से PHP में निर्मित है। यह PHP स्क्रिप्ट के संकलित बाइट-कोड (opcode) को कैश करता है। इसके बिना, प्रत्येक अनुरोध स्रोत कोड को फिर से पार्स और संकलित करता है — यह संसाधनों की बर्बादी है। OpCache को सक्षम करने से कोड की एक भी पंक्ति के बिना गति में 30-50% तक की वृद्धि मिलती है।

php.ini में कॉन्फ़िगरेशन:

opcache.enable=1opcache.memory_consumption=128opcache.max_accelerated_files=4000opcache.revalidate_freq=60


1.2. APCu (Alternative PHP Cache user)

APCu उपयोगकर्ता डेटा (चर, गणना परिणाम) के लिए एक कैश है। यह RAM में काम करता है और छोटे, बार-बार अनुरोधित डेटा जैसे कॉन्फ़िगरेशन, अनुवाद, सरल SQL क्वेरी के परिणामों को संग्रहीत करने के लिए आदर्श है।

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

<?php// डेटा को 300 सेकंड के लिए कैश में सहेजेंapcu_store('site_config', $config, 300);

// कैश से डेटा प्राप्त करें$cached = apcu_fetch('site_config');if ($cached === false) { // डेटा नहीं है — लोड करें और सहेजें $cached = loadConfigFromDB(); apcu_store('site_config', $cached, 300);}

// कुंजी हटाएंapcu_delete('site_config');?>

लाभ: बाहरी सेवाओं की आवश्यकता नहीं, कॉन्फ़िगर करने में आसान, न्यूनतम विलंबता। नुकसान: केवल एक सर्वर पर काम करता है, PHP-FPM पुनरारंभ होने पर डेटा खो जाता है।



2. Memcached — सरल डेटा के लिए वितरित कैश



Memcached RAM में एक उच्च-प्रदर्शन वितरित कैशिंग सिस्टम है। यह सरल "कुंजी-मान" जोड़े और सत्रों को संग्रहीत करने के लिए आदर्श है। APCu के विपरीत, Memcached एक अलग सर्वर के रूप में काम करता है और कई वेब सर्वरों के लिए साझा हो सकता है।



एक्सटेंशन स्थापित करना: pecl install memcached

कनेक्शन और कार्य का उदाहरण:

<?php$memcached = new Memcached();$memcached->addServer('localhost', 11211);

// TTL (time to live) 600 सेकंड के साथ सेट करें$memcached->set('user_123_profile', $profileData, 600);

// प्राप्त करें$profile = $memcached->get('user_123_profile');if ($memcached->getResultCode() === Memcached::RES_NOTFOUND) { // कैश मिस — डीबी से लोड करें $profile = getUserProfileFromDB(123); $memcached->set('user_123_profile', $profile, 600);}

// सत्र कैशिंग (php.ini में कॉन्फ़िगरेशन)// session.save_handler = memcached// session.save_path = "localhost:11211"?>

Memcached का उपयोग कब करें:

  • SQL क्वेरी परिणामों को कैश करना (उत्पाद सूची, श्रेणियां)
  • वितरित वातावरण में उपयोगकर्ता सत्र संग्रहीत करना
  • HTML ब्लॉक कैश करना (जैसे मेनू या फुटर)

सीमाएं: कोई अंतर्निहित डेटा संरचना नहीं (केवल स्ट्रिंग), अधिकतम मान आकार 1 एमबी (बढ़ाया जा सकता है), कोई स्थायित्व नहीं — सर्वर पुनरारंभ होने पर कैश साफ़ हो जाता है।



3. Redis — डेटा संरचनाओं के साथ उन्नत कैश



Redis केवल एक कैश नहीं है, बल्कि जटिल प्रकारों के समर्थन के साथ एक पूर्ण मेमोरी डेटा स्टोर है: सूचियाँ, सेट, हैश, सॉर्टेड सेट। यह स्थायित्व (डिस्क पर सहेजना) का समर्थन करता है,

ब्लॉग

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