PHP कैशिंग: Redis, Memcached और बिल्ट-इन समाधान - संपूर्ण गाइड

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

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

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

परिचय: PHP प्रदर्शन की नींव क्यों है कैशिंग

\n\n

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

\n\n

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

\n\n

1. PHP के बिल्ट-इन समाधान: APCu, OPcache और फ़ाइल कैशिंग

\n\n

1.1. OPcache — बाइट-कोड कैशिंग

\n\n

OPcache PHP में बिल्ट-इन एक मैकेनिज़्म है जो स्क्रिप्ट्स के कंपाइल किए गए बाइट-कोड को मेमोरी में कंपाइल और स्टोर करता है। हर बार PHP फ़ाइल को पार्स और कंपाइल करने के बजाय, OPcache तैयार परिणाम का उपयोग करता है। इससे बिना एक भी लाइन कोड बदले 30-50% तक की स्पीड बढ़ोतरी मिलती है।

\n\n

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

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

OPcache के काम की जाँच करने के लिए इस फंक्शन का उपयोग करें:

\n
<?php\nvar_dump(opcache_get_status());\n?>
\n\n

1.2. APCu — मेमोरी में डेटा कैशिंग

\n\n

APCu (Alternative PHP Cache) एक एक्सटेंशन है जो शेयर्ड मेमोरी में मनमाना डेटा स्टोर करने के लिए है। यह भारी गणनाओं, कॉन्फ़िगरेशन या ऐसे डेटा को कैश करने के लिए एकदम सही है जो शायद ही कभी बदलता है।

\n\n

APCu के साथ कैशिंग का उदाहरण:

\n
<?php\n// डेटा को 3600 सेकंड (1 घंटे) के लिए कैश में सेव करें\n$data = ['users' => 1500, 'status' => 'active'];\napcu_store('app_stats', $data, 3600);\n\n// कैश से पढ़ें\n$cached = apcu_fetch('app_stats');\nif ($cached === false) {\n    // कैश में डेटा नहीं है — फिर से कैलकुलेट करें\n    $cached = computeExpensiveData();\n    apcu_store('app_stats', $cached, 3600);\n}\n?>
\n\n

1.3. फ़ाइल कैशिंग — बिना अतिरिक्त एक्सटेंशन के आसान शुरुआत

\n\n

अगर Redis या Memcached इंस्टॉल करना संभव नहीं है, तो फ़ाइल सिस्टम का उपयोग करें। यह धीमा है, लेकिन किसी भी होस्टिंग पर काम करता है।

\n\n
<?php\nclass FileCache {\n    private $cacheDir;\n    \n    public function __construct($dir = '/tmp/php_cache/') {\n        $this->cacheDir = $dir;\n        if (!is_dir($dir)) {\n            mkdir($dir, 0777, true);\n        }\n    }\n    \n    public function get($key, $ttl = 3600) {\n        $file = $this->cacheDir . md5($key) . '.cache';\n        if (!file_exists($file)) return null;\n        \n        if (time() - filemtime($file) > $ttl) {\n            unlink($file);\n            return null;\n        }\n        \n        return unserialize(file_get_contents($file));\n    }\n    \n    public function set($key, $data) {\n        $file = $this->cacheDir . md5($key) . '.cache';\n        file_put_contents($file, serialize($data));\n    }\n}\n\n// उपयोग\n$cache = new FileCache();\n$result = $cache->get('expensive_query');\nif ($result === null) {\n    $result = $db->query('SELECT ...');\n    $cache->set('expensive_query', $result);\n}\n?>
\n\n

2. Memcached — उच्च लोड के लिए वितरित कैशिंग

\n\n

2.1. Memcached क्या है और इसका उपयोग कब करें

\n\n

Memcached एक वितरित रैम-आधारित कैशिंग सिस्टम है। यह key-value सिद्धांत पर काम करता है और SQL क्वेरी परिणामों, उपयोगकर्ता सत्रों और HTML टुकड़ों को कैश करने के लिए एकदम सही है। मुख्य लाभ:

\n
    \n
  • इंस्टॉल और कॉन्फ़िगर करना आसान
  • \n
  • उच्च गति
  • \n

ब्लॉग

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