वापसी DECR

Vapasi Decr



रेडिस इंटीजर मैनिपुलेशन

स्ट्रिंग प्रकार सबसे मौलिक डेटा प्रकार है जो रेडिस प्रदान करता है। रेडिस स्ट्रिंग्स ग्रंथों, क्रमबद्ध JSON ऑब्जेक्ट्स, छवियों, ऑडियो और यहां तक ​​​​कि संख्यात्मक मानों को संग्रहीत करने में सक्षम हैं। इस गाइड में, हम संख्यात्मक मानों और पूर्णांकों के हेरफेर पर ध्यान केंद्रित करेंगे। रेडिस संख्यात्मक डेटा को रखने के लिए अलग पूर्णांक डेटा प्रकारों का समर्थन नहीं करता है। यदि एक रेडिस कुंजी में एक स्ट्रिंग होती है जिसे पूर्णांक के रूप में दर्शाया जा सकता है, तो रेडिस संख्या मानों को आधार -10 64-बिट हस्ताक्षरित पूर्णांक के रूप में व्याख्या कर सकता है।


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







डीईसीआर कमांड

DECR कमांड को किसी दिए गए कुंजी पर संग्रहीत संख्या मान को एक-एक करके घटाने के लिए पेश किया जाता है। यह केवल स्ट्रिंग मानों पर काम करता है जिसे बेस -10 64-बिट पूर्णांक के रूप में दर्शाया जा सकता है। डीईसीआर कमांड गैर-स्ट्रिंग मानों या स्ट्रिंग मानों के लिए एक त्रुटि फेंकता है जिसे पूर्णांक के रूप में प्रदर्शित नहीं किया जा सकता है।



DECR कमांड का सिंटैक्स निम्नलिखित है:



डीईसीआर कुंजी


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





डीईसीआर कमांड डिक्रीमेंट ऑपरेशन के बाद परिणामी हस्ताक्षरित पूर्णांक देता है। यदि निर्दिष्ट कुंजी मौजूद नहीं है, तो कमांड मान को 0 पर सेट करता है और फिर इसे एक से घटाता है। साथ ही, जब मान एक गैर-स्ट्रिंग है या 64-बिट हस्ताक्षरित पूर्णांक के रूप में प्रदर्शित नहीं किया जा सकता है तो एक त्रुटि फेंक दी जाती है। यह कमांड निरंतर समय जटिलता (O(1)) पर काम करता है जो कि बेहद तेज है।

केस का उपयोग करें - एक ऑनलाइन गेम में खिलाड़ी के स्वास्थ्य में कमी

आइए एक ऑनलाइन गेम की कल्पना करें जहां एक मेडी-पैक के सामने आने पर प्रत्येक खिलाड़ी का स्वास्थ्य एक-एक करके बढ़ जाता है। इसी तरह, यदि खिलाड़ी गिर जाता है या किसी अन्य खिलाड़ी द्वारा मारा जाता है, तो स्वास्थ्य एक से कम हो जाता है।



एक खिलाड़ी के स्वास्थ्य को स्टोर करने के लिए आदर्श उम्मीदवार एक रेडिस स्ट्रिंग प्रकार है जहां हम स्वास्थ्य को पूर्णांक के रूप में संग्रहीत कर सकते हैं। आइए एक कुंजी बनाएं स्वास्थ्य:खिलाड़ीआईडी:1 और इसका मान 10 पर सेट करें। हम SET कमांड का उपयोग निम्नानुसार कर सकते हैं:

समूह स्वास्थ्य: खिलाड़ी आईडी: 1 10



हम यहां संग्रहीत मूल्य को सत्यापित करने के लिए GET कमांड का उपयोग कर सकते हैं स्वास्थ्य: खिलाड़ी आईडी: 1।

स्वास्थ्य प्राप्त करें: खिलाड़ी आईडी: 1



मान लीजिए कि आईडी 1 वाला खिलाड़ी हिट हो जाता है और स्वास्थ्य एक से कम हो जाना चाहिए। DECR कमांड का उपयोग निम्नानुसार किया जा सकता है:

डीसीआर स्वास्थ्य: खिलाड़ी आईडी: 1


जैसा कि अपेक्षित था, DECR कमांड डिक्रीमेंट ऑपरेशन के बाद अपडेटेड वैल्यू को प्रिंट करता है जैसा कि निम्न आकृति में दिखाया गया है:


इसके अलावा, हम key . पर संग्रहीत मूल्य का निरीक्षण कर सकते हैं स्वास्थ्य:खिलाड़ीआईडी:1 जीईटी कमांड के साथ।

स्वास्थ्य प्राप्त करें: खिलाड़ी आईडी: 1



जैसा कि अपेक्षित था, मूल्य में एक की कमी आई।

DECR ऑपरेटर ऋणात्मक संख्याओं के साथ भी मान्य है। आइए कुंजी पर एक नया नकारात्मक संख्यात्मक मान संग्रहीत करें नकारात्मक: मान1 .

समूह नकारात्मक: मान1 -3


हम निम्नानुसार GET कमांड का उपयोग करके मूल्य का निरीक्षण कर सकते हैं:

नकारात्मक प्राप्त करें: मान 1



निम्न कमांड दिखाता है कि कुंजी पर DECR कमांड का उपयोग कैसे किया जाता है नकारात्मक: मान1:

नकारात्मक गिरावट: value1


गैर-पूर्णांक मानों पर DECR कमांड

जब हम रेडिस कुंजी पर DECR कमांड का उपयोग करने का प्रयास करते हैं तो कुछ किनारे के मामले होते हैं जिसमें एक गैर-स्ट्रिंग डेटा प्रकार या एक स्ट्रिंग होती है जिसे पूर्णांक के रूप में प्रदर्शित नहीं किया जा सकता है। DECR कमांड उन मामलों में एक त्रुटि फेंकता है जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:

समूह notAnIntergerVal नमस्ते


'हैलो' एक टेक्स्ट है जिसे एक हस्ताक्षरित पूर्णांक में परिवर्तित नहीं किया जा सकता है। इसलिए, यदि हम इसे इस कुंजी के विरुद्ध कहते हैं, तो DECR कमांड एक त्रुटि उत्पन्न करता है।

decr notAnIntergerVal


गैर-मौजूदा कुंजियों पर DECR कमांड

कुछ मामलों में, आप DECR कमांड को उस कुंजी पर कॉल कर सकते हैं जो Redis डेटा स्टोर में मौजूद नहीं है। तो, कमांड निर्दिष्ट कुंजी बनाता है और इसके मान को पूर्णांक 0 पर सेट करता है। उसी समय, मान एक से कम हो जाता है।

डीसीआर गैर-मौजूदा-कुंजी


जैसा कि अपेक्षित था, आउटपुट -1 है।


कुल मिलाकर, कम विलंबता अनुप्रयोगों में काउंटरों को लागू करने के लिए DECR कमांड बहुत उपयोगी है।

निष्कर्ष

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