2009-03-31 15 views
7

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

  1. जाहिर है कि मैं कैश में डाल सकने वाले डेटा की मात्रा सर्वर रैम पर निर्भर करता है। मान लीजिए कि मेरे पास पर्याप्त सर्वर फार्म और रैम है, क्या प्रदर्शन की कमी देखने से पहले मुझे अधिकतम संख्या में ऑब्जेक्ट्स मेमकैच में रखा जा सकता है? कारण मैं पूछता हूं कि मुझे लगता है कि अगर मैंने सचमुच लाखों ऑब्जेक्ट को मेमकैच में रखा है, तो क्या इसके लिए ऑब्जेक्ट्स को इंडेक्स और ऑब्जेक्ट देखने में अधिक समय नहीं लगेगा? क्या यहां आकर्षित करने की कोई रेखा है।

  2. क्या मुझे छोटे लेकिन अधिक ऑब्जेक्ट्स को कैश किया जाना चाहिए, या बड़ी लेकिन कम संख्या में ऑब्जेक्ट्स? छोटी वस्तुओं में उन्हें प्राप्त करने के लिए डीबी को अधिक गोल यात्राएं शामिल होती हैं, लेकिन यह कार्यक्रम के लिए अधिक लचीला और आसान है।

आपको बहुत बहुत धन्यवाद,

रे।

उत्तर

3

मान लीजिए कि मेरे पास पर्याप्त सर्वर फार्म और रैम है, क्या प्रदर्शन प्रदर्शन में वृद्धि शुरू होने से पहले मुझे अधिकतम संख्या में मेमकैच में रखा जा सकता है?

आदर्श रूप से, आपका कैश हर समय 100% पूर्ण होना चाहिए। memcached लुकअप कुंजियों के लिए एक हैशिंग एल्गोरिदम का उपयोग करता है, जहां तक ​​मुझे पता है, और अधिक चाबियाँ संग्रहीत करने के लिए प्रदर्शन दंड नहीं होना चाहिए।

क्या मुझे छोटे लेकिन अधिक वस्तुओं को कैश किया जाना चाहिए, या बड़ी लेकिन कम संख्या में ऑब्जेक्ट्स?

मैं कल्पना करता हूं कि बड़ी लेकिन कम वस्तुएं डेटाबेस और कैश लुकअप दोनों के लिए समय की मात्रा को कम करने के लिए बेहतर होंगी, लेकिन आपको इसे मामले के आधार पर लेना चाहिए। जब तक आप नहीं जानते कि प्रदर्शन अंतर कठोर होगा, तो मैं सबसे पहले सबसे आसान और शुरू करने की सलाह दूंगा यदि यह पर्याप्त नहीं है।

+0

आपके इनपुट के लिए धन्यवाद। क्या मुझे कम राउंड ट्रिप करना पसंद है, लेकिन अधिक सर्वर मेमोरी उपयोग के बाद और अधिक दौर यात्राएं लेकिन कम सर्वर मेमोरी उपयोग? आम तौर पर बोलना। –

+0

मैं इसे इस तरह से रखूंगा: आप हमेशा अधिक बैंडविड्थ खरीदने से अधिक मेमोरी खरीद सकते हैं। इसलिए मैं कम राउंडट्रिप्स पसंद करूंगा जब तक कि मेरे पास कोई अच्छा कारण न हो। –

+0

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

4

मेमकैच आंतरिक रूप से ओ (1) लुकअप रखने के लिए हैश का उपयोग करता है - इसे जितना संभव हो उतना जटिल काम करने के लिए डिज़ाइन किया गया है।

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

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

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

+0

आप अपने उपयोगकर्ता ऑब्जेक्ट के लिए कितनी देर तक कैश करते हैं? क्या मुझे 30 सेकंड या 2 मिनट की तरह कैश करना चाहिए? –

+0

डेटा कितनी बार बदलता है? यदि यह अक्सर बदल जाएगा, लेकिन अक्सर इस्तेमाल नहीं किया जाता है, तो आपको इसे कैशिंग से बहुत बड़ा लाभ नहीं मिल सकता है। यदि यह शायद ही कभी बदलता है, तो आप इसे हफ्तों तक कैश कर सकते हैं, लेकिन इसे फिर से पढ़ने के लिए इसे बदलने पर कैश से हटा दें। पीएस उपयोगी उत्तरों को वोट दें। –

संबंधित मुद्दे