रेडिस एक्सपायर हैश की

Redisa Eksapayara Haisa Ki



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


रेडिस हैश कुंजियों में रहने का अनंत समय (TTL) होता है, जिसका अर्थ है कि वे लगातार बने रहते हैं, उन्हें DEL जैसे कमांड का उपयोग करके स्पष्ट रूप से हटा दिया जाता है। इस लेख में, हम EXPIRE कमांड का उपयोग करके रेडिस हैश के लिए TTL सेट करने पर ध्यान केंद्रित करेंगे।







रेडिस एक्सपायर कमांड

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



EXPIRE कमांड का सिंटैक्स इस प्रकार है:



EXPIRE कुंजी की समाप्ति_समय_सेकंड [ एनएक्स | जीएक्स | जीटी | लेफ्टिनेंट ]


चाभी: हैश, सूची या सेट की कुंजी जिसे आपको टाइमआउट सेट करने की आवश्यकता है।





समाप्ति_समय_सेकंड: सेकंड में टाइमआउट मान।

कई वैकल्पिक तर्क EXPIRE कमांड द्वारा स्वीकार किए जाते हैं।



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

एक्सएक्स: जब निर्दिष्ट कुंजी का मौजूदा टाइमआउट मान होता है, तो नई समाप्ति सेट हो जाती है।

जी.टी.: यदि नया टाइमआउट मान मौजूदा समय से अधिक है, तो नया समय समाप्ति मान सेट हो जाता है।

एलटी: नया टाइमआउट मान सेट किया जाता है यदि मौजूदा समय नए से बड़ा है।

सबसे महत्वपूर्ण बात यह है कि EXPIRE कमांड निरंतर समय की जटिलता पर काम करता है। यदि कमांड निष्पादन सफल होता है तो पूर्णांक 1 वापस कर दिया जाता है। यदि गलत तर्कों या गैर-मौजूदा कुंजियों के कारण ऑपरेशन विफल हो जाता है, तो 0 वापस कर दिया जाता है।

हम समाप्ति समय निर्धारित करने के लिए हैश पर EXPIRE कमांड का उपयोग करेंगे जैसा कि निम्नलिखित अनुभाग में दिखाया गया है:

एक्सपायर कमांड का उपयोग करके रेडिस हैश को समाप्त करें

मान लें कि प्रति उपयोगकर्ता सत्र की जानकारी रेडिस हैश में संग्रहीत है सत्र: आईडी: 1000: उपयोगकर्ता: 10। हम कई फ़ील्ड-वैल्यू जोड़े के साथ रेडिस हैश बनाने के लिए एचएमएसईटी कमांड का उपयोग कर सकते हैं:

एचएमसेट सत्र: आईडी: 1000 उपयोगकर्ता: 10 उपयोगकर्ता नाम 'जे' कुकी 'हां' पासवर्ड '389वाईएसयू2'


HGETALL कमांड का उपयोग करके बनाए गए हैश का निरीक्षण करें।

hgetall सत्र:आईडी: 1000 उपयोगकर्ता: 10



इसके अलावा, यदि उपयोगकर्ता 60 सेकंड से अधिक समय तक निष्क्रिय रहता है, तो सत्र 10 सेकंड के बाद समाप्त हो जाता है। सत्र की जानकारी संग्रहीत करने वाले हैश के लिए समाप्ति समय निर्धारित करके सत्र समाप्ति प्राप्त की जाती है।

हम EXPIRE कमांड का उपयोग इस प्रकार कर सकते हैं:

सत्र समाप्त करें: आईडी: 1000 उपयोगकर्ता: 10 10


जैसा कि उल्लेख किया गया है, टाइमआउट मान 10 सेकंड पर सेट है।


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

टीटीएल सत्र: आईडी: 1000 उपयोगकर्ता: 10



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


जैसा कि -2 पूर्णांक उत्तर इंगित किया गया है, हैश मौजूद नहीं है।

समाप्ति समय के अस्तित्व के आधार पर टाइमआउट सेट करें

EXPIRE कमांड एक निर्दिष्ट हैश के लिए समाप्ति के अस्तित्व के आधार पर एक नया टाइमआउट सेट करने के लिए NX और XX तर्क स्वीकार करता है। आइए इसके साथ एक नया हैश बनाएं नो टाइमआउट चाभी .

hmset noTimeOut नाम 'परीक्षण'


आइए पिछले हैश के लिए एक नई समाप्ति सेट करने का प्रयास करें। इसके अतिरिक्त, हम XX तर्क को EXPIRE कमांड को भी पास करते हैं।

एक्सपायर नोटाइमआउट पंद्रह XX


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


अगर हम का उपयोग करते हैं एनएक्स विकल्प, टाइमआउट मान 15 पर सेट है।

एक्सपायर नोटाइमआउट पंद्रह एनएक्स



EXPIRE कमांड पूर्णांक 1 उत्तर देता है जिसका अर्थ है कि टाइमआउट ठीक से सेट है।

मौजूदा टाइमआउट मान के आधार पर टाइमआउट सेट करें

जीटी और एलटी विकल्पों का उपयोग मौजूदा टाइमआउट लंबाई के आधार पर हैश समाप्ति समय निर्धारित करने के लिए किया जा सकता है।

आइए एक नया हैश बनाएं जिसका नाम है हैशविथटाइमआउट।

hmset हैशविथटाइमआउट फ़ील्ड1 मान1


इसके बाद, हम हैश के लिए 200 सेकंड का समाप्ति समय निर्धारित करते हैं।

समय सीमा समाप्त हैशविथटाइमआउट 200


आइए जीटी विकल्प के साथ हैश के लिए 100 सेकंड का एक नया टाइमआउट सेट करने का प्रयास करें:

समय सीमा समाप्त हैशविथटाइमआउट 100 जीटी


चूँकि GT विकल्प निर्दिष्ट किया गया है, EXPIRE कमांड जाँच करेगा कि क्या नया टाइमआउट मान मौजूदा समय से अधिक है और नया समाप्ति समय सेट करें। इस उदाहरण में, नया टाइमआउट मौजूदा टाइमआउट से बड़ा नहीं है। इसलिए, आदेश नया समाप्ति समय निर्धारित नहीं करेगा और 0 वापस कर दिया जाएगा।


आइए GT के बजाय LT विकल्प का उपयोग करें। चूंकि नया समाप्ति समय वर्तमान समय से कम है, इसलिए निम्न आदेश को सफलतापूर्वक नया टाइमआउट सेट करना चाहिए।

समय सीमा समाप्त हैशविथटाइमआउट 100 लेफ्टिनेंट


निष्कर्ष

संक्षेप में, Redis EXPIRE कमांड का उपयोग किसी दिए गए कुंजी के लिए TTL मान सेट करने के लिए किया जाता है। डिफ़ॉल्ट रूप से, रेडिस हैश कुंजियाँ किसी भी टाइमआउट से संबद्ध नहीं होती हैं जिसे गैर-वाष्पशील कहा जाता है। जैसा कि चर्चा की गई है, रेडिस हैश पर टाइमआउट मान सेट करने के लिए EXPIRE कमांड का उपयोग किया जाता है। आमतौर पर, हैश को टाइमआउट मान के रूप में निर्दिष्ट समय की मात्रा के बाद रेडिस डेटा स्टोर से हटा दिया जाता है। जैसा कि उदाहरणों में दिखाया गया है, EXPIRE कमांड एक शर्त के आधार पर हैश एक्सपायरी सेट करने के लिए XX, NX, GT, और LT जैसे कुछ वैकल्पिक तर्कों को स्वीकार करता है।