रेडिस गेटेक्स

Redisa Geteksa



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

आमतौर पर, GET और SET कमांड का उपयोग किसी दिए गए रेडिस कुंजी पर संग्रहीत स्ट्रिंग-प्रकार के मानों को संग्रहीत और पुनर्प्राप्त करने के लिए किया जाता है। ये दो आदेश निरंतर समय जटिलता के साथ काम करते हैं।







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



एक रेडिस कुंजी का टीटीएल

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



GETEX कमांड

जैसा कि हाइलाइट किया गया है, GETEX कमांड GET कमांड के समान है, सिवाय इसके कि इसका उपयोग निर्दिष्ट कुंजी के लिए समाप्ति समय निर्धारित करने के लिए किया जा सकता है। इसके अलावा, एक कमांड विकल्प किसी दिए गए कुंजी से टाइमआउट मान को हटा सकता है। GETEX कमांड सिंटैक्स इस प्रकार है:





गेटेक्स कुंजी [ EX टाइमआउट_इन_सेकंड | पीएक्स टाइमआउट_इन_मिलीसेकंड | EXAT टाइमआउट_इन_यूनिक्स-टाइम-सेकंड | पीएक्सएटी टाइमआउट_इन_यूनिक्स-टाइम-मिलीसेकंड | दृढ़ रहना ]

चाभी: यह वह कुंजी है जो एक स्ट्रिंग मान को इंगित करती है।

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



भूतपूर्व: यह किसी दिए गए कुंजी के लिए समाप्ति समय सेकंड में सेट करेगा।

पीएक्स: कुंजी टाइमआउट मान मिलीसेकंड में सेट किया जाएगा।

इसके अलावा, हम निम्नलिखित कमांड विकल्पों का उपयोग करके सेकंड या मिलीसेकंड में UNIX टाइमस्टैम्प मान निर्दिष्ट कर सकते हैं: EXAT तथा पीएक्सएटी :

EXAT: समाप्ति समय UNIX टाइमस्टैम्प प्रारूप में सेट किया जाएगा, और टाइमस्टैम्प सेकंड में होगा।

पीएक्सएटी: किसी दिए गए रेडिस कुंजी के लिए टाइमआउट को मिलीसेकंड में यूनिक्स टाइमस्टैम्प के रूप में सेट किया जाएगा।

दृढ़ रहना: इसे निर्दिष्ट करके, आप एक निर्दिष्ट कुंजी से जुड़े मूल्य को जीने के लिए समय निकाल सकते हैं।

GETEX कमांड निर्दिष्ट कुंजी का मान लौटाता है। यह कमांड केवल स्ट्रिंग-प्रकार के मानों के साथ काम करता है, लेकिन हैश, सूचियाँ, सॉर्ट किए गए सेट आदि के साथ नहीं। यदि आप एक गैर-स्ट्रिंग मान से जुड़ी कुंजी निर्दिष्ट करते हैं, तो कमांड एक त्रुटि लौटाएगा। इसके अलावा, यदि कुंजी पहले ही समाप्त हो चुकी है या मौजूद नहीं है, तो कमांड वापस आ जाएगी शून्य

निम्नलिखित खंड में, हम GETEX कमांड के व्यावहारिक उपयोग को कवर करेंगे।

केस का उपयोग करें - पासवर्ड रिकवरी/ओटीपी के लिए अस्थायी रीसेट लिंक या पिन कोड जनरेशन

एक वेब होस्टिंग कंपनी पंजीकृत उपयोगकर्ताओं के लिए पासवर्ड पुनर्प्राप्ति सुविधा प्रदान कर रही है। सुरक्षा उपाय के रूप में, वे उपयोगकर्ता को एक नया URL लिंक भेजते हैं, जो 5 मिनट के भीतर समाप्त हो जाएगा। कंपनी लंबे समय से रेडिस डेटा स्टोर का उपयोग कर रही है और किसी दिए गए उपयोगकर्ता के लिए लाइव वैल्यू का समय निर्धारित करने के लिए GETEX कमांड का उपयोग करती है।

मान लें कि user_id 1000 वाला उपयोगकर्ता पासवर्ड पुनर्प्राप्ति का अनुरोध करता है। तो, पुनर्प्राप्ति URL को कुंजी पर संग्रहीत किया जा सकता है रिकवरीयूआरएल:उपयोगकर्ता आईडी:1000 . हम पुनर्प्राप्ति URL को निम्नानुसार संग्रहीत करने के लिए SET कमांड का उपयोग कर सकते हैं:

समूह पुनर्प्राप्तिURL:उपयोगकर्ता आईडी: 1000 '9135789एफबी6ई0एफ81सी37209ए22एफए71एडी33सी9053798'

आइए देखें कि क्या स्ट्रिंग URL कुंजी पर ठीक से संग्रहीत है रिकवरीयूआरएल: उपयोगकर्ता आईडी: 1000। हम GETEX कमांड का उपयोग इस प्रकार कर सकते हैं:

getex पुनर्प्राप्तिURL:उपयोगकर्ता आईडी: 1000

पिछली कमांड का आउटपुट निम्न में दिखाया गया है:

यदि हमने GETEX कमांड के बजाय GET कमांड का उपयोग किया है, तो आउटपुट समान होगा।

आइए टीटीएल कमांड का उपयोग यह जांचने के लिए करें कि इस कुंजी के साथ समाप्ति समय जुड़ा हुआ है या नहीं।

टीटीएल रिकवरीURL:उपयोगकर्ता आईडी: 1000

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

इस उदाहरण के अनुसार, होस्टिंग कंपनी को पुनर्प्राप्ति URL के लिए 5 मिनट का टाइमआउट सेट करने की आवश्यकता है। तो, हम का उपयोग करेंगे भूतपूर्व कमांड विकल्प। चूँकि 5 मिनट 300 सेकंड है, हम GETEX कमांड का निर्माण इस प्रकार कर सकते हैं:

getex पुनर्प्राप्तिURL:उपयोगकर्ता आईडी: 1000 भूतपूर्व 500

डेटा स्टोर में कुंजी मौजूद रहने के शेष समय का निरीक्षण करने के लिए टीटीएल कमांड को कुछ बार चलाएं।

जैसा कि अपेक्षित था, समय कम हो रहा है, और अंततः, रिकवरीयूआरएल:उपयोगकर्ता आईडी:1000 कुंजी हटा दी जाएगी। 5 मिनट के बाद आउटपुट निम्न है:

-2 कमांड द्वारा वापस कर दिया गया है, जिसका अर्थ है कि कुंजी समाप्त हो गई है और डेटा स्टोर से हटा दी गई है।

कभी-कभी, आपको दी गई कुंजी से संबद्ध टाइमआउट मान को निकालने की आवश्यकता हो सकती है। इसलिए, किसी निर्दिष्ट कुंजी से संबंधित TTL मान को हटाने के लिए PERSIST कमांड विकल्प का उपयोग किया जा सकता है।

आइए एक और नमूना कुंजी बनाएं और इसे एक स्ट्रिंग मान असाइन करें। इस मामले में, हम टीटीएल मान को मिलीसेकंड में निर्दिष्ट करेंगे पिक्सल विकल्प।

समूह KeytoTestPersist 'यह 60 सेकंड के भीतर समाप्त हो जाएगा' पिक्सल 50000

अगला, हम शेष समय की जाँच इस प्रकार करेंगे:

जैसी कि उम्मीद थी, टीटीएल घट रहा है। आइए GETEX कमांड को PERSIST विकल्प के साथ इस प्रकार कॉल करें:

getex KeytoTestPersist कायम रहता है

आदर्श रूप से, यह इस कुंजी से जुड़े टीटीएल को हटा देगा। आइए कुंजी के लिए टीटीएल का निरीक्षण करें KeytoTestPersist.

TTL कमांड ने -1 लौटाया, जिसका अर्थ है कि कोई TTL कुंजी के साथ संबद्ध नहीं है KeytoTestPersist.

इसी प्रकार, गेटेक्स UNIX टाइमस्टैम्प में कुंजियों के लिए समाप्ति समय निर्धारित करने के लिए कमांड का उपयोग किया जा सकता है।

निष्कर्ष

संक्षेप में, Redis GETEX कमांड का उपयोग किसी दिए गए कुंजी पर संग्रहीत स्ट्रिंग मानों को पुनः प्राप्त करने के लिए किया जा सकता है जैसा कि GET कमांड करता है। GETEX कमांड के साथ एकमात्र अंतर यह है कि यह किसी दिए गए कुंजी के लिए समाप्ति समय को सेट करने और हटाने का समर्थन करता है। यह सेकंड, मिलीसेकंड और यूनिक्स-टाइमस्टैम्प सेकंड या मिलीसेकंड में समाप्ति समय निर्दिष्ट करने के लिए कई वैकल्पिक तर्कों का समर्थन करता है। जैसा कि चर्चा की गई है, कमांड किसी दिए गए कुंजी के लिए संबंधित TTL को हटाने के लिए PERSIST विकल्प प्रदान करता है। कुल मिलाकर, GETEX कमांड निरंतर समय जटिलता के साथ काम करता है।