रेडिस एक्सट्रिम

Redisa Eksatrima



रेडिस स्ट्रीम का निम्न-स्तरीय विवरण

रेडिस स्ट्रीम एक एपेंड-ओनली डेटा स्ट्रक्चर है जो मेमोरी-एफिशिएंट स्टोरेज मैकेनिज्म के साथ अत्यधिक कुशल रीड एंड इंसर्ट ऑपरेशंस का एक सेट प्रदान करता है। आंतरिक रूप से, रेडिस स्ट्रीम रेडिक्स ट्री डेटा संरचना का उपयोग करती है, जो उच्च मेमोरी दक्षता के साथ एक अंतरिक्ष-अनुकूलित ट्री है।

रेडिस स्ट्रीम डेटा को प्रविष्टियों की सूची के रूप में संग्रहीत करता है जहां प्रत्येक प्रविष्टि में कुंजी-मूल्य जोड़े होते हैं। निम्न स्तर पर, इन प्रविष्टियों को मैक्रो-नोड्स में पैक किया जाता है, जैसा कि निम्नलिखित में दिखाया गया है।









इस लेख में, हम XTRIM कमांड का उपयोग करके स्ट्रीम प्रविष्टियों को हटाने पर ध्यान केंद्रित कर रहे हैं, और उपर्युक्त अवधारणा हटाने के संचालन की दक्षता को बारीकी से प्रभावित करती है। यदि मैक्रो-नोड स्तर पर किया जाता है, लेकिन प्रवेश स्तर पर नहीं किया जाता है, तो आमतौर पर, Redis स्ट्रीम प्रविष्टि निष्कासन बहुत कुशल होता है। यह क्रियाविधि XTRIM कमांड के साथ क्रियान्वित की जाती है जिसके बारे में हम अगले भाग में चर्चा करेंगे।



एक्सटीआरआईएम कमांड

XTRIM कमांड का उपयोग किसी दिए गए थ्रेशोल्ड मान के आधार पर किसी स्ट्रीम की प्रविष्टियों को काटने के लिए किया जाता है। थ्रेशोल्ड प्रति स्ट्रीम प्रविष्टियों की अधिकतम संख्या या पुरानी प्रविष्टि आईडी हो सकती है। XTRIM कमांड थ्रेशोल्ड के प्रकार को कमांड तर्क के रूप में स्वीकार करता है। XTRIM कमांड का सिंटैक्स इस प्रकार है।





XTRIM स्ट्रीम_कुंजी MAXLEN | मिनी [ = | ~ ] दहलीज मूल्य [ सीमा गिनती ]

स्ट्रीम_की : रेडिस स्ट्रीम की कुंजी।

मैक्सलेन : प्रविष्टियों को ट्रिम करने के बाद स्ट्रीम की अधिकतम लंबाई। उन सभी प्रविष्टियों को हटा दिया जाएगा जो स्ट्रीम की लंबाई से अधिक हैं, जो कि थ्रेशोल्ड मान द्वारा निर्दिष्ट है। यह तर्क एक धनात्मक पूर्णांक है।

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

= ऑपरेटर : निर्दिष्ट होने पर, थ्रेशोल्ड मान के आधार पर सटीक ट्रिमिंग की जाएगी।

~ ऑपरेटर : निर्दिष्ट होने पर, थ्रेशोल्ड मान और मैक्रो-नोड आकार के आधार पर लगभग सटीक ट्रिमिंग की जाएगी।

दहलीज मूल्य : MAXLEN या MINID तर्क के आधार पर थ्रेशोल्ड मान।

सीमा गिनती : हटाए जाने वाली प्रविष्टियों की अधिकतम संख्या।

केस 01 का उपयोग करें - अधिकतम लंबाई के आधार पर स्ट्रीम प्रविष्टियों को हटाना

मान लीजिए कि एक पर्यटन कंपनी पर्यटकों की जानकारी पर नज़र रखने के लिए एक रेडिस स्टोर का रखरखाव करती है। प्रत्येक पर्यटक की जानकारी को कुंजी-मूल्य जोड़े के रूप में संग्रहीत करने के लिए रेडिस स्ट्रीम डेटा संरचना का उपयोग किया गया है। समय के साथ, धारा बढ़ी है, और वे केवल नवीनतम 1000 प्रविष्टियां रखने की योजना बना रहे हैं। इसलिए उन्होंने निर्धारित किया है कि किसी भी समय धारा की अधिकतम लंबाई 1000 होनी चाहिए। इसे हासिल करने के लिए XTRIM कमांड का इस्तेमाल किया गया है।

प्रदर्शन उद्देश्यों के लिए, सबसे पहले, हम निम्नानुसार 10 प्रविष्टियों के साथ एक स्ट्रीम बनाएंगे। सम्मिलन करने के लिए XADD कमांड का उपयोग किया गया है।

xadd टूरिस्टइन्फो * नाम जैक देश इटली परिवारमेम्स 5
xadd टूरिस्टइन्फो * नाम हैरी देश यूएसए परिवारमेम्स दो
xadd टूरिस्टइन्फो * नाम निकोमिता देश जापान परिवारमेम्स 3
xadd टूरिस्टइन्फो * नाम जकारिया देश भारत परिवारमेम्स दो
xadd टूरिस्टइन्फो * नाम रेडमंड देश ब्राजील परिवारमेम्स 6
xadd टूरिस्टइन्फो * नाम मिला देश जापान परिवारमेम्स 3
xadd टूरिस्टइन्फो * नाम मैरीजॉन देश यूएसए परिवारमेम्स दो
xadd टूरिस्टइन्फो * नाम लिज़ा देश इटली परिवारमेम्स 5
xadd टूरिस्टइन्फो * नाम निमशिका देश जापान परिवारमेम्स 3
xadd टूरिस्टइन्फो * नाम निशा देश इटली परिवारमेम्स 5

आइए स्ट्रीम टूरिस्टइन्फो का निरीक्षण करने के लिए XRANGE कमांड का उपयोग इस प्रकार करें।

एक्सरेंज टूरिस्टइन्फो - +

आउटपुट:

जैसा कि अपेक्षित था, इस कमांड द्वारा 10 स्ट्रीम प्रविष्टियाँ प्रदर्शित की गई हैं।

प्रदर्शन उद्देश्यों के लिए, हम उस धारा को ट्रिम कर देंगे जहां इसकी अधिकतम लंबाई 5 होगी।

एक्सट्रिम टूरिस्टइन्फो मैक्सलेन 5

आइए XRANGE कमांड के साथ फिर से स्ट्रीम प्रविष्टियों का निरीक्षण करें।

जैसा कि अपेक्षित था, धारा से पांच प्रविष्टियां निकाली गई हैं, और इसकी लंबाई 5 है।

केस 02 का उपयोग करें - स्ट्रीम आईडी के आधार पर स्ट्रीम प्रविष्टियों को हटाना

आइए एक उदाहरण लेते हैं जहां एक मौसम कंपनी रेडिस स्ट्रीम का उपयोग करके किसी दिए गए स्थान की मौसम की जानकारी का ट्रैक रखती है। अब, वे उन पुरानी प्रविष्टियों को हटाना चाहते हैं जिनकी अब आवश्यकता नहीं है। हम MINID रणनीति का उपयोग करके XTRIM कमांड का उपयोग कर सकते हैं, जैसा कि निम्नलिखित में दिखाया गया है।

सबसे पहले, हम वेदरइन्फो नामक एक स्ट्रीम बनाएंगे और इसमें 5 प्रविष्टियाँ इस प्रकार जोड़ेंगे।

xadd Weatherinfo * अस्थायी 10 नमी पचास
xadd Weatherinfo * अस्थायी बीस नमी 70
xadd Weatherinfo * अस्थायी 12 नमी 65
xadd Weatherinfo * अस्थायी पंद्रह नमी 88
xadd Weatherinfo * अस्थायी 18 नमी चार पाच

आउटपुट:

आइए XTRIM कमांड का उपयोग उन प्रविष्टियों को हटाने के लिए करें जिनकी आईडी निर्दिष्ट सीमा मान से कम है।

xtrim वेदरइन्फो MINID 1660485503248 - 0

निर्दिष्ट न्यूनतम आईडी तीसरी प्रविष्टि से संबद्ध है। इसलिए, तीसरी प्रविष्टि के बाद की प्रविष्टियाँ जिनमें कम आईडी हैं, हटा दी जाएंगी।

आउटपुट:

चूंकि हमने स्पष्ट रूप से = या ~ तर्क निर्दिष्ट नहीं किए हैं, कमांड डिफ़ॉल्ट रूप से = ऑपरेटर का उपयोग करता है। इसलिए, दोनों उपयोग मामलों में सटीक ट्रिमिंग की गई है। यदि आपने ~ ऑपरेटर को स्पष्ट रूप से निर्दिष्ट किया है, तो लगभग सटीक ट्रिमिंग की जाएगी, जैसा कि निम्नलिखित में दिखाया गया है।

जैसा कि ऊपर की आकृति में दिखाया गया है, XTRIM कमांड का उपयोग ~ ऑपरेटर के साथ किया गया है। हम कमांड को उन सभी प्रविष्टियों को हटाने के लिए कहते हैं जो 100 की लंबाई से अधिक हैं। चूंकि हम XTRIM कमांड को सटीक ट्रिमिंग करने के लिए बाध्य नहीं करते हैं, यह ट्रिमिंग ऑपरेशन की दक्षता पर ध्यान केंद्रित करेगा। इसलिए, यह तत्काल प्रविष्टियों को नहीं हटाएगा जो समान मैक्रो-नोड से संबंधित हैं। यह अगली तीन प्रविष्टियाँ रखेगा जो एक ही मैक्रो-नोड में हैं और उनके बाद के सभी मैक्रो-नोड्स को हटा देंगी। यह सटीक ट्रिमिंग दृष्टिकोण की तुलना में काफी मात्रा में प्रदर्शन सुधार देता है, जो कमांड को अतिरिक्त प्रयास करने के लिए मजबूर करता है। वही प्रक्रिया तब होती है जब थ्रेशोल्ड एंट्री आईडी पर आधारित होता है।

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

निष्कर्ष

संक्षेप में, XTRIM कमांड का उपयोग थ्रेशोल्ड मान के आधार पर स्ट्रीम प्रविष्टियों को हटाने के लिए किया जाता है। थ्रेशोल्ड मान के प्रकार को संदर्भ के साथ बदला जा सकता है जिसे MAXLEN और MINID कमांड तर्कों का उपयोग करके निर्दिष्ट किया जा रहा है। जैसा कि चर्चा की गई है, ट्रिमिंग दो तरीकों से की जा सकती है जहां ट्रिमिंग ऑपरेशन थ्रेशोल्ड को सटीक या अनुमानित सीमा के रूप में मानेगा। डिफ़ॉल्ट रूप से, कमांड = ऑपरेटर का उपयोग करता है जिसका उपयोग सटीक ट्रिमिंग के लिए किया जाता है। ~ ऑपरेटर के साथ, आप उपरोक्त अनुभाग में बताए अनुसार अनुमानित ट्रिमिंग कर सकते हैं। कुल मिलाकर, अनुमानित ट्रिमिंग दृष्टिकोण और LIMIT तर्क आपको XTRIM कमांड के साथ काफी प्रदर्शन लाभ प्राप्त करने में मदद करते हैं।