2012-06-27 14 views
6

memcached विकि से:डेटा पूर्ण होने पर memcached में डेटा कैसे बदला जाता है, और memcache प्रदर्शन?

जब तालिका भरा हुआ है, बाद में आवेषण कारण पुराने डेटा में साफ़ कर दिया करने के लिए कम से कम हाल ही में प्रयुक्त (LRU) आदेश।

मैं निम्नलिखित प्रश्न हैं:

  1. कौन सा डेटा साफ़ कर दिया जाएगा? वह जो सम्मिलन से पुराना है, या जिसने हाल ही में उपयोग किया है? मेरा मतलब है कि हाल ही में एक्सेस किया गया डेटा d1 है जो सम्मिलन से सबसे पुराना है और डेटा बदलने के दौरान कैश भरा हुआ है, यह d1 को प्रतिस्थापित करेगा?

  2. मैं memcached के साथ बातचीत के लिए PHP का उपयोग कर रहा हूँ। क्या मैं नियंत्रण कर सकता हूं कि memcached में डेटा कैसे बदल दिया गया है? जैसे कि मैं नहीं चाहता कि मेरा कुछ डेटा तब तक बदल जाए जब तक कि कैश पूर्ण न हो जाए। इस डेटा को प्रतिस्थापित नहीं किया जाना चाहिए इसके बजाय अन्य डेटा सम्मिलन के लिए हटाया जा सकता है।

  3. जब डेटा की समयसीमा समाप्त हो जाती है तो क्या यह तुरंत हटा दिया जाता है?

  4. memcached प्रदर्शन पर संग्रहीत कुंजी की संख्या का क्या प्रभाव है?

  5. विकल्प memcached.conf में क्या महत्व है? मैं समझ नहीं पा रहा हूं कि "सभी पेजेड मेमोरी को लॉक करें" का अर्थ क्या है। इसके अलावा, README में विवरण पर्याप्त नहीं है।

+2

एलआरयू का उपयोग हाल ही में उपयोग किया जाता है ... यदि memcache विकी कहते हैं कि, तो मुझे लगता है कि यह तब तक मामला है जब तक आपके पास अन्यथा –

+1

का सुझाव देने के सबूत नहीं हैं, ईमानदार होने के लिए, जैसे आप या तो बहुत सोच रहे हैं या memcached की तरह आप जो चाहते हैं वह नहीं है। memchached एक * कैश * है जो अक्सर उपयोग किए जाने वाले डेटा को जल्दी से उपलब्ध कराने के उद्देश्य से होता है जो अन्यथा लोड करने में कुछ समय ले सकता है। यह बिल्कुल गारंटी नहीं देता है कि यह डेटा हर बार उपलब्ध होगा, या कितनी देर तक, या बिल्कुल भी। यह एक प्राथमिक डेटा स्टोर नहीं है। यह सब कुछ * हो सकता है * कभी-कभी डेटा की पुनर्प्राप्ति को गति देता है। आप कभी नहीं मान सकते कि कुछ डेटा कैश, अवधि में होगा। यह कैशिंग की प्रकृति है। – deceze

+0

http://en.wikipedia.org/wiki/Cache_algorithms#Least_Recently_Used - क्या आपने इसे पढ़ा है? –

उत्तर

16

memcached स्मृति में नया डाटा स्टोर करने की जरूरत है, और स्मृति पहले से ही काफी है, तो क्या यह है:

  • आ उपयुक्त * अवधि समाप्त हो प्रवेश के लिए memcached खोजों, और यदि कोई मिलता है, यह उस प्रविष्टि में डेटा को बदल देता है। कौन सा बिंदु 3) डेटा तुरंत हटाया नहीं है का जवाब देता है, लेकिन जब नए डेटा सेट किया जाना चाहिए, अंतरिक्ष
  • अगर कोई समय सीमा समाप्त प्रवेश पाया जाता है, एक है कि कम से कम हाल ही में उपयोग बदल दिया है

* रखें पुनः आवंटन किया गया है दिमाग के साथ मेमकैच डील कैसे करें: यह विभिन्न आकारों के ब्लॉक आवंटित करता है, इसलिए कैश में सेट किए जा रहे डेटा का आकार यह तय करने में भूमिका निभाता है कि कौन सी प्रविष्टि हटा दी गई है। प्रविष्टियां आकार में 1 एम तक 2 के, 4 के, 8 के, 16 के ... आदि हैं।

यह सभी जानकारी in the documentation मिल सकती है, इसलिए बस ध्यान से पढ़ें। जैसा कि @deceze कहते हैं, memcached गारंटी नहीं देता है कि डेटा स्मृति में उपलब्ध होगा और आपको कैश मिस तूफान के लिए तैयार रहना होगा। मिस तूफान से बचने के लिए एक दिलचस्प दृष्टिकोण कुछ यादृच्छिक ऑफ़सेट के साथ समाप्ति समय निर्धारित करना है, 10 + [0..10] मिनट कहें, जिसका अर्थ है कि कुछ आइटम 10 के लिए संग्रहीत किए जाएंगे, और अन्य 20 मिनट के लिए (लक्ष्य यह है कि सभी आइटम एक ही समय में समाप्त नहीं होते हैं)।

  • एक वार्म अप स्क्रिप्ट, कि डेटा लोड करने के कैश पूछते हैं:

    और अगर आप कैश में कुछ सुरक्षित रखना चाहते हैं, तो आप दो काम करने की है।तो यह हमेशा हाल ही में उपयोग किया जाता है

  • आइटम के लिए 2 समाप्ति समय: एक वास्तविक समाप्ति समय, चलिए 30 मिनट में कहते हैं; एक और - आइटम के साथ कैश - तार्किक समाप्ति समय, चलो 10 मिनट में कहते हैं। जब आप कैश से डेटा पुनर्प्राप्त करते हैं, तो आप लॉजिकल समाप्ति समय की जांच करते हैं और यदि यह समाप्त हो जाता है - डेटा पुनः लोड करें और उसे 30 मिनट के लिए कैश में सेट करें। इस तरह आप वास्तविक कैश समाप्ति समय कभी नहीं हिट करेंगे, और डेटा समय-समय पर ताज़ा किया जाएगा।

5) क्या "memcached.conf" में -k विकल्प का महत्व है। मैं समझ नहीं पा रहा हूं कि "सभी पेजेड मेमोरी लॉक करें" का अर्थ क्या है। README में विवरण भी पर्याप्त नहीं है।

कोई फर्क नहीं पड़ता कि आप memcached के लिए कितनी मेमोरी आवंटित करेंगे, यह केवल आवश्यक राशि का उपयोग करेगा, उदाहरण के लिए यह वास्तव में उपयोग की जाने वाली स्मृति को आवंटित करता है। -k विकल्प के साथ, पूरी याददाश्त आरक्षित होने पर आरक्षित होती है, इसलिए यह हमेशा पूरी मात्रा में स्मृति आवंटित करता है, भले ही उसे इसकी आवश्यकता हो या