Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Redis

रेडिस रेप्लिकास पर गुम कुंजियाँ

यदि आप रेडिस में एक्सपायरिंग (जिसे "अस्थिर" के रूप में भी जाना जाता है) कुंजियों का उपयोग करते हैं, तो जब आप अपने डेटाबेस में एक नई रेडिस प्रतिकृति संलग्न करते हैं, तो आप आश्चर्यचकित हो सकते हैं:आपकी प्रतिकृति की कुंजी गणना आपके प्राथमिक डीबी पर कुंजी गणना से काफी कम हो सकती है। . यह विशेष रूप से सामान्य है यदि आपके पास बड़ी संख्या में अस्थिर कुंजियाँ हैं।

क्या आपकी रेडिस प्रतिकृति में चाबियां नहीं हैं? क्या आपने अभी डेटा खो दिया है? संक्षिप्त जवाब नहीं है"। हालांकि, यह समझना उपयोगी है कि, वास्तव में, आपकी रेडिस प्रतिकृति कम कुंजी गणना की रिपोर्ट क्यों कर रही है, भले ही आपने कोई डेटा नहीं खोया हो। इसमें दो कार्यान्वयन विवरण शामिल हैं:Redis कुंजियों को कैसे समाप्त करता है और कैसे एक Redis आपके डेटासेट को नए प्रतिरूपों में भेजता है।

Redis अस्थिर कुंजियों को कैसे समाप्त करता है?

रेडिस में, अस्थिर कुंजियों को स्मृति से ठीक उसी समय समाप्त नहीं किया जाता है जब वे समाप्त होने के लिए निर्धारित होते हैं। इसके बजाय, उन्हें दो तरीकों में से एक के माध्यम से हटा दिया जाता है:

  1. जब एक रेडिस क्लाइंट एक कुंजी पर एक रीड या राइट ऑपरेशन करता है, तो रेडिसर पहले यह देखने के लिए जांच करेगा कि क्या यह कुंजी मौजूद है और इसकी समाप्ति समय है। यदि यह मौजूद है और अतीत में समाप्ति समय है, तो रेडिस तुरंत स्मृति से कुंजी को हटा देगा आदेश को संभालने से पहले।

  2. अस्थिर कुंजियों को स्मृति में हमेशा के लिए चिपकाने से रोकने के लिए, यदि वे एक्सेस नहीं हैं, तो रेडिस कुंजी समाप्त करने के लिए एक सरल निष्क्रिय एल्गोरिदम का उपयोग करता है:प्रत्येक 10 मिलीसेकंड, यह 100 यादृच्छिक अस्थिर कुंजी पकड़ लेता है और तुरंत किसी भी कुंजी को हटा देता है जिसका समाप्ति समय बीत चुका है। यदि 25 या अधिक कुंजियाँ हटा दी जाती हैं, तो पुन:तत्काल एक और 100 कुंजियाँ पकड़ लेता है और फिर से शुरू हो जाता है।

ऊपर दी गई दूसरी विधि महत्वपूर्ण है क्योंकि इसका मतलब है कि कुंजी की एक महत्वपूर्ण संख्या अस्थिर कुंजी हो सकती है जो पहले से ही "समाप्त" हो चुकी हैं लेकिन अभी तक स्मृति से हटाई नहीं गई हैं1 . Redis इन कुंजियों को आपके INFO में "कुंजी" और "समाप्ति" गणनाओं में शामिल करना जारी रखेगा आउटपुट जब तक वे हटा दिए जाते हैं।

Redis डेटासेट को नए प्रतिरूपों में कैसे भेजता है?

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

तो मेरी प्रतिकृति की कुंजी की संख्या प्राथमिक सर्वर से कम क्यों है?

जब आप एक Redis उदाहरण के लिए एक प्रतिकृति संलग्न करते हैं, तो वह प्रतिकृति एक डेटासेट प्राप्त कर रही है जिसमें प्राथमिक डेटाबेस से समाप्त (लेकिन अभी भी मौजूदा) अस्थिर कुंजियाँ शामिल नहीं हैं। यही कारण है कि किसी Redis सर्वर को anRDB बैकअप से पुनर्स्थापित करते समय आपकी कुंजी संख्या कम हो सकती है।

आरडीबी व्यवहार को कम करने में मदद के लिए @mattsta को विशेष धन्यवाद।

  1. व्यवहार में, यह संख्या आमतौर पर इस तथ्य के कारण बहुत कम है कि Redis लगातार हटाने के लिए कुंजियों की तलाश कर रहा है।


  1. रेडिस के लिए 10 त्वरित टिप्स

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

  1. रेडिस कीज़ - रेडिस डेटास्टोर में कुंजियों को प्रबंधित करने के लिए कमांड

    Redis में, Keys को डेटाबेस में संग्रहीत मान को संग्रहीत करने, प्रबंधित करने और पुनर्प्राप्त करने के लिए एक विशिष्ट पहचानकर्ता के रूप में उपयोग किया जाता है। रेडिस-क्ली में रेडिस कमांड का उपयोग करके कुंजियों का प्रबंधन किया जा सकता है। रेडिस की कमांड का उपयोग करने का सिंटैक्स इस प्रकार है :- सिंटैक्स

  1. रेडिस कुंजी - रेडिस डेटास्टोर में संग्रहीत एक या अधिक कुंजी कैसे प्राप्त करें

    इस ट्यूटोरियल में, हम सीखेंगे कि रेडिस-क्ली में COMMAND - KEYS का उपयोग करके रेडिस डेटास्टोर में एक या अधिक कुंजियों को कैसे संग्रहीत किया जाए। इस कमांड का उपयोग एक या अधिक कुंजियों को वापस करने के लिए किया जाता है जो एक निर्दिष्ट पैटर्न से मेल खाते हैं। पैटर्न ग्लोब-शैली में निर्दिष्ट हैं। ग्लोब स