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

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

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

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

परिचय: PHP में कैशिंग की आवश्यकता क्यों है?

कोई भी आधुनिक PHP वेब एप्लिकेशन प्रदर्शन की समस्या का सामना करता है। डेटाबेस पर प्रत्येक क्वेरी, कॉन्फ़िगरेशन फ़ाइलों को पढ़ना, या जटिल HTML टेम्पलेट को रेंडर करना सर्वर का समय और संसाधन लेता है। कैशिंग एक तकनीक है जो महंगे ऑपरेशनों के परिणामों को तेज़ स्टोरेज में सहेजने की अनुमति देती है, ताकि बार-बार अनुरोध करने पर तैयार डेटा तुरंत प्रदान किया जा सके।

PHP में कैशिंग के कई स्तर हैं: बिल्ट-इन बाइट-कोड कैशिंग (OPcache) से लेकर Redis और Memcached जैसी वितरित प्रणालियाँ तक। इस लेख में, हम चर्चा करेंगे कि इनमें से प्रत्येक टूल का उपयोग कैसे और कब करना है, ताकि आपकी साइट तेज़ी से काम करे, अधिक लोड सहन करे और संसाधनों की बचत करे।



बिल्ट-इन समाधान: OPcache और APCu

बाहरी सेवाओं को जोड़ने से पहले, यह देखना उचित है कि PHP "आउट ऑफ़ द बॉक्स" क्या प्रदान करता है। दो प्रमुख तंत्र — OPcache और APCu — बिना अतिरिक्त सॉफ़्टवेयर स्थापित किए प्रदर्शन में महत्वपूर्ण वृद्धि दे सकते हैं।



OPcache: बाइट-कोड कैशिंग

हर बार जब PHP एक स्क्रिप्ट निष्पादित करता है, तो वह इसे बाइट-कोड (opcode) में कंपाइल करता है। OPcache इस बाइट-कोड को साझा मेमोरी में सहेजता है, जो बाद के अनुरोधों पर कंपाइलेशन चरण को छोड़ने की अनुमति देता है। यह विशेष रूप से फ्रेमवर्क (Laravel, Symfony) और CMS (WordPress, Drupal) के लिए प्रभावी है, जहाँ प्रत्येक अनुरोध पर दर्जनों फ़ाइलें लोड होती हैं।

php.ini में सेटिंग:

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

सभी production सर्वरों पर OPcache को सक्षम करने की अनुशंसा की जाती है। PHP एप्लिकेशन को 20–40% तक तेज़ करने का यह शायद सबसे सरल तरीका है।



APCu: उपयोगकर्ता डेटा कैशिंग

APCu (Alternative PHP Cache) साझा मेमोरी में मनमाना डेटा संग्रहीत करने के लिए एक सरल इंटरफ़ेस प्रदान करता है। OPcache के विपरीत, जो कोड को कैश करता है, APCu गणनाओं के परिणामों को संग्रहीत करता है: DB से डेटा, सीरियलाइज़्ड ऑब्जेक्ट, HTML टुकड़े।

SQL क्वेरी परिणाम कैश करने का उदाहरण:

// डेटा को 300 सेकंड के लिए सहेजें$key = 'users_list';$data = apcu_fetch($key, $success);

if (!$success) { $data = $db->query("SELECT * FROM users")->fetchAll(); apcu_store($key, $data, 300);}

return $data;

APCu एकल-पृष्ठ एप्लिकेशन या एक सर्वर वाली परियोजनाओं के लिए आदर्श है। हालाँकि, इसका डेटा स्थानीय रूप से संग्रहीत होता है, और कई सर्वरों (क्षैतिज स्केलिंग) का उपयोग करते समय, आपको एक वितरित समाधान की आवश्यकता होगी।



Memcached: सरल और तेज़ वितरित कैशिंग

Memcached एक उच्च-प्रदर्शन कैशिंग सिस्टम है जो रैम में काम करता है। इसे डेटाबेस पर लोड कम करके डायनामिक वेब एप्लिकेशन को गति देने के लिए बनाया गया था। मुख्य लाभ सरलता, गति और वितरित स्टोरेज के लिए समर्थन हैं।

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

pecl install memcached

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

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

$key = 'article_123';$cached = $memcached->get($key);

if ($cached === false) { $article = getArticleFromDB(123); $memcached->set($key, $article, 3600); // 1 घंटे के लिए कैश} else { $article = $cached;}

Memcached जटिल डेटा संरचनाओं (केवल स्ट्रिंग और बाइनरी ऑब्जेक्ट) का समर्थन नहीं करता है, लेकिन यह "क्लासिक" कैश के कार्य को अच्छी तरह से करता है: कुंजी द्वारा डेटा डालें, कुंजी द्वारा लें। यह याद रखना महत्वपूर्ण है कि Memcached में बिल्ट-इन पर्सिस्टेंस नहीं है — सर्वर को रीबूट करने पर सारा डेटा खो जाता है।



Redis: कैशिंग के लिए शक्तिशाली और लचीला उपकरण

Redis सिर्फ एक कैश नहीं है, बल्कि पर्सिस्टेंस, ट्रांज़ैक्शन और जटिल संरचनाओं (लिस्ट, सेट, हैश, क्यू) के समर्थन के साथ एक पूर्ण इन-मेमोरी डेटा स्टोर है। PHP डेवलपर के लिए, Red

ब्लॉग

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