हां, जैसा कि इटमार हैबर कहते हैं, आपको इस रेडिस मेमोरी ऑप्टिमाइज़ेशन गाइड को देखना चाहिए। लेकिन आपको कुछ और बातों का भी ध्यान रखना चाहिए:
- कुंजी के बजाय HSET को प्राथमिकता दें। Redis केवल प्रमुख स्थान प्रबंधन पर बहुत अधिक मेमोरी की खपत करता है। सरल (और मोटे) शब्दों में, 1,000,000 कुंजियों के साथ 1 एचएसईटी एक मान के साथ 1,000,000 कुंजियों की तुलना में 10 गुना कम मेमोरी की खपत करता है।
- HSET का आकार
hash-max-zipmap-entries. से कम रखें और मान्यhash-max-zipmap-valueयदि स्मृति मुख्य लक्ष्य है। यह समझना सुनिश्चित करें किhash-max-zipmap-entriesऔरhash-max-zipmap-valueअर्थ। इसके अलावा, ziplist के बारे में पढ़ने के लिए कुछ समय निकालें। - आप वास्तव में
hash-max-zipmap-entriesको संभालना नहीं चाहते हैं 10M+ कुंजियों के साथ; इसके बजाय, आपको एक एचएसईटी को कई स्लॉट में तोड़ना चाहिए। उदाहरण के लिए, आपhash-max-zipmap-entries. सेट करते हैं 10,000 के रूप में। तो 10M+ कुंजियों को संग्रहीत करने के लिए आपको 10,000 प्रत्येक के साथ 1000+ HSET कुंजियाँ चाहिए। एक मोटे नियम के रूप में:crc32(key) % maxHsets. - रेडिस में स्ट्रिंग्स के बारे में पढ़ें और इस संरचना के लिए वास्तविक मेमोरी प्रबंधन के आधार पर एक कुंजी नाम (एचएसईटी में) लंबाई का उपयोग करें। सरल शब्दों में, कुंजी लंबाई को 7 बाइट्स से कम रखते हुए, आप प्रति कुंजी 16 बाइट्स खर्च करते हैं, लेकिन 8-बाइट कुंजी प्रत्येक में 48 बाइट्स खर्च करती है। क्यों? सरल गतिशील तारों के बारे में पढ़ें।
इसके बारे में पढ़ना उपयोगी हो सकता है:
- रेडिस मेमोरी ऑप्टिमाइज़ेशन (श्रीपतिकृष्णन से)
- आंतरिक ziplist संरचना के बारे में टिप्पणियाँ।
- रेडिस (इंस्टाग्राम) में करोड़ों सरल की-वैल्यू पेयर स्टोर करना