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

कैशिंग को अप टू डेट कैसे रखें

चूंकि आप कैश का उपयोग कर रहे हैं, आपको डेटा असंगतता की समस्या को सहन करना होगा , यानी कुछ समय बिंदु पर, कैश में डेटा डेटाबेस में डेटा से अलग होता है।

जब भी मान बदल दिया गया हो, आपको कैश में मान अपडेट करने की आवश्यकता नहीं है। अन्यथा, संपूर्ण कैश सिस्टम बहुत जटिल हो जाएगा (उदाहरण के लिए आपको कैश की गई चाबियों की एक सूची बनाए रखनी होगी), और ऐसा करने के लिए अनावश्यक भी हो सकता है (उदाहरण के लिए कुंजी-मान केवल एक बार उपयोग किया जा सकता है, और कोई आवश्यकता नहीं है इसे और अपडेट करने के लिए)।

<ब्लॉककोट>

हम कैशे में डेटा को कैसे अपडेट कर सकते हैं और कैशे सिस्टम को सरल कैसे रख सकते हैं?

आम तौर पर, कैश में की-वैल्यू पेयर को सेट करने या अपडेट करने के अलावा, हम एक TIMEOUT भी सेट करते हैं। प्रत्येक कुंजी के लिए . उसके बाद, क्लाइंट कैश से की-वैल्यू पेयर प्राप्त कर सकता है। हालाँकि, यदि कोई कुंजी टाइमआउट तक पहुँच जाती है, तो कैश सिस्टम कैश से की-वैल्यू पेयर को हटा देता है। इसे THE KEY HAS BEEN EXPIRED . कहा जाता है . अगली बार, क्लाइंट उस कुंजी को कैश से प्राप्त करने का प्रयास कर रहा है, उसे कुछ भी नहीं मिलेगा। इसे CACHE MISS . कहा जाता है . इस मामले में, क्लाइंट को डेटाबेस से की-वैल्यू पेयर प्राप्त करना होगा, और इसे नए टाइमआउट के साथ कैशे में अपडेट करना होगा।

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

<ब्लॉककोट>

टाइमआउट कैसे सेट करें?

आम तौर पर, समाप्ति नीति दो प्रकार की होती है:

  1. N में समाप्त हो जाएगा सेकंड/मिनट/घंटे...
  2. भविष्य के किसी समय बिंदु पर समाप्त हो जाएगा, उदा. 2017/7/30 00:00:00 पर समाप्त हो रहा है

एक बड़ा टाइमआउट बड़े पैमाने पर डेटाबेस के लोड को कम कर सकता है, जबकि डेटा लंबे समय तक पुराना हो सकता है। एक छोटा सा टाइमआउट जितना संभव हो सके डेटा को अप-टू-डेट रख सकता है, जबकि डेटाबेस पर भारी भार होगा। इसलिए टाइमआउट डिज़ाइन करते समय आपको ट्रेड-ऑफ़ को संतुलित करना होगा

<ब्लॉककोट>

रेडिस की एक्सपायरी कुंजी कैसे होती है?

रेडिस के पास कुंजियाँ समाप्त करने के दो तरीके हैं:

  1. जब क्लाइंट एक कुंजी पर काम करने की कोशिश करता है, तो रेडिस जांचता है कि क्या कुंजी टाइमआउट तक पहुंच गई है। यदि ऐसा होता है, तो रेडिस कुंजी को हटा देता है, और कार्य करता है जैसे कि कुंजी मौजूद नहीं है। इस तरह, Redis सुनिश्चित करता है कि क्लाइंट को एक्सपायर्ड डेटा न मिले।
  2. Redis में एक एक्सपायरी थ्रेड भी होता है जो एक कॉन्फ़िगर की गई आवृत्ति पर कुंजी का नमूना लेता है। यदि कुंजियाँ टाइमआउट तक पहुँच जाती हैं, तो Redis इन कुंजियों को हटा देता है। इस तरह, Redis प्रमुख समाप्ति प्रक्रिया को तेज कर सकता है।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. लॉगस्टैश और इलास्टिक्स खोज के बीच डेटा ब्रोकर/मैसेजिंग सिस्टम के रूप में रेडिस बनाम रैबिटएमक्यू

  2. उदाहरण द्वारा फ्लास्क - एक रेडिस कार्य कतार को लागू करना

  3. वाइल्डकार्ड का उपयोग करके कुंजी ढूँढना

  4. जेडिस पाइपलाइन के साथ मूल्य प्राप्त करना

  5. Redis समर्थित ASP.NET सत्रस्टेट प्रदाता