Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

लारवेल कैशिंग को समझना:कैशे मुखौटा और रेडिस

सामान्य:

वे सभी कैशे हैं ।

इन सभी का उपयोग समय की लागत कम करने . के लिए किया जाता है .

डिफरनेट:

कॉन्फ़िगरेशन और रूट:

यह आवेदन . से संबंधित है . हम इसे एप्लिकेशन कैशे . कहते हैं ।

php artisan config:cache
php artisan route:cache

ये दो कमांड कैशिंग रूट और कॉन्फ़िगरेशन हैं।

पथ:

<ब्लॉकक्वॉट>

वे हमेशा bootstrap/cache/ . में संगृहीत होते हैं

चल रहा है

php artisan config:clear
php artisan route:clear

केवल bootstrap/cache/ में निर्देशिकाओं और फ़ाइलों को साफ़ करें ।

वे स्थिर . हैं . इसलिए वे तभी बदले जाते हैं जब आप उन्हें बदलते हैं।

लाभ

यदि आप उन्हें बदलते हैं, तो आपको clear करना होगा और cache उन्हें मैन्युअल रूप से।

इन मार्गों और विन्यासों को देखने के बाद।

Laravel फ़ाइल से कॉन्फ़िगरेशन और मार्गों को फिर से पढ़ने की आवश्यकता नहीं है जिसमें IO का समय लगा।

फाइलसिस्टम कैश और रेडिस कैश:

फाइलसिस्टम कैश और रेडिस कैश दोनों ही कैशे भी हैं।

हालांकि, वे भिन्न ड्राइवर . का उपयोग करते हैं डेटा संग्रहीत करने के लिए, इसका अर्थ है जहां आप कैशिंग डेटा संग्रहीत करते हैं

<ब्लॉकक्वॉट>

फाइल सिस्टम पथ:यदि आप फाइल सिस्टम ड्राइवर का उपयोग कर रहे हैं। वे storage/framework/cache/ . में स्टोर होते हैं

रीड्स पाथ:डेटा स्टोर redis . में कुंजी-मान द्वारा।

आप उनका उपयोग कब करते हैं?

जब आपने पाया कि डेटा प्राप्त करने के लिए इस कोड के लिए कई अनुरोध हैं। और ये डेटा इतनी तेज़ी से नहीं बदले हैं।

आप उन्हें स्टोर करने के लिए कैश का उपयोग कर सकते हैं, और फिर, अगली बार इस एपीआई के लिए एक और अनुरोध। यह केवल कैश से डेटा लेता है। नीचे की तरह:

$posts = Cache::remember('index.posts', 30, function()
{return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});

पहला अनुरोध डेटाबेस से पोस्ट के डेटा प्राप्त करता है, और फिर इन डेटा को कैश (रीड्स या फाइल सिस्टम) में संग्रहीत करता है जो 30 सेकंड के बाद समाप्त हो जाता है।

अगला अनुरोध केवल कैश के माध्यम से पोस्ट डेटा प्राप्त करें। उन्हें फिर से डेटाबेस में खोजने की आवश्यकता नहीं है।

और यह वाला:

use Illuminate\Support\Facades\Redis; 

Route::get('/', function () { 
     $visits = Redis::incr('visits'); 
     return $visits; 
});

इसका मतलब है कि जब लोग localhost:8000/ . का अनुरोध करते हैं , उपयोगकर्ताओं की विज़िट की संख्या redis . में बढ़ रही है (डेटाबेस में स्टोर करने की आवश्यकता नहीं है, इसमें अधिक समय लगता है), अगली बार, जब विज़िट काउंट खोजने का अनुरोध किया जाता है, तो यह redis में पाया जा सकता है बहुत जल्दी।

<ब्लॉकक्वॉट>

पीएस:यहां रेडिस फेकाडे का उपयोग करें, फिर डेटा redis . में संग्रहीत किया जाता है ।

यदि आप कैशे ड्राइवर के रूप में रेडिस का उपयोग कर रहे हैं, Cache::remember() डेटा को रेडिस में भी स्टोर करेगा।

हालांकि, रेडिस फेकाडे का उपयोग करके, आप कई रेडिस विधियों का उपयोग कर सकते हैं।

कौन सा बेहतर है?

मुझे लगता है redis filesystem . से बेहतर है ।

  1. क्योंकि redis मेमोरी में डेटा स्टोर करें, और फाइल सिस्टम डिस्क में स्टोर करें। मेमोरी से डेटा पढ़ें तेज़ डिस्क की तुलना में।

  2. संचालित करें Redis में डेटा आसान है फाइलसिस्टम की तुलना में। उदाहरण के लिए, Redis एक विशिष्ट टैग के लिए सभी कैश को साफ़ करने का समर्थन करता है, लेकिन फ़ाइल सिस्टम नहीं कर सकता [क्योंकि फ़ाइल सिस्टम कैशे डेटा को एन्क्रिप्टेड कुंजी के नाम से संग्रहीत करता है]।

  3. वितरित . के लिए सर्वर, फाइल सिस्टम कैश एक बुरा विचार है। कम कैश हिट अनुपात।

ईमानदारी से, अन्य ड्राइवरों को चुना जा सकता है, जैसे mongodb

वैसे, मेरी अंग्रेजी बहुत अच्छी नहीं है, आशा है कि आप समझ गए होंगे।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. स्क्रिप्ट ने वैश्विक चर बनाने का प्रयास किया

  2. डॉकर कंटेनर में डॉकर-कंपोज़ डाउन और अप के बीच रेडिस डेटा को जीवित रखें

  3. Redis में सॉर्ट किए गए सेट की श्रेणी से एक नया सेट बनाना

  4. गलत प्रकार का मान रखने वाली कुंजी के विरुद्ध WRONGTYPE ऑपरेशन php

  5. FindByIndexNameSessionRepository की बीन कैसे बनाएं?