रेडिस

रेडिस (रिमोट डिक्शनरी सर्वर) एक इन-मेमोरी डेटा स्ट्रक्चर स्टोर है, जिसका उपयोग वैकल्पिक स्थायित्व ([[डेटाबेस सिस्टम)]] के साथ वितरित कैश, इन-मेमोरी डेटाबेस | इन-मेमोरी की-वैल्यू डेटाबेस | की-वैल्यू डेटाबेस, कैश और संदेश दलाल  के रूप में किया जाता है।. क्योंकि यह सभी डेटा को मेमोरी में रखता है और इसके डिज़ाइन के कारण, रेडिस कम विलंबता से पढ़ने और लिखने की सुविधा प्रदान करता है, जो इसे उन उपयोग के मामलों के लिए विशेष रूप से उपयुक्त बनाता है जिनके लिए कैश (कंप्यूटिंग) की आवश्यकता होती है। रेडिस सबसे लोकप्रिय नो-एसक्यूएल डेटाबेस है, और कुल मिलाकर सबसे लोकप्रिय डेटाबेस में से एक. रेडिस भी सबसे व्यापक रूप से उपयोग किए जाने वाले Nosql डेटाबेस में से एक है, जिसका उपयोग ट्विटर जैसी कंपनियों में किया जा रहा है, एयरबीएनबी , टिंडर , याहू एडोब , हुलु , और अमेज़ॅन.

रेडिस विभिन्न प्रकार की अमूर्त डेटा संरचनाओं का समर्थन करता है, जैसे स्ट्रिंग (कंप्यूटर विज्ञान), सूची (अमूर्त डेटा प्रकार), सहयोगी सरणी, सेट (अमूर्त डेटा प्रकार), सॉर्ट किए गए सेट, हाइपरलॉगलॉग, बिटमैप्स, स्ट्रीम (कंप्यूटिंग), और स्थानिक सूचकांक।

इस परियोजना का विकास और रखरखाव साल्वाटोर सैनफिलिपो द्वारा 2009 में शुरू किया गया था। 2015 से 2020 तक, उन्होंने रेडिस लैब्स द्वारा प्रायोजित एक प्रोजेक्ट कोर टीम का नेतृत्व किया। साल्वाटोर सैनफिलिपो ने 2020 में रेडिस को अनुरक्षक के रूप में छोड़ दिया। यह बीएसडी लाइसेंस 3-क्लॉज लाइसेंस के तहत जारी किया गया खुला स्रोत सॉफ्टवेयर  है। 2021 में, मूल लेखक और मुख्य अनुरक्षक के चले जाने के कुछ ही समय बाद, रेडिस लैब्स ने लैब्स को अपने नाम से हटा दिया और अब इसे केवल रेडिस के नाम से जाना जाता है।

इतिहास
रेडिस नाम का अर्थ रिमोट डिक्शनरी सर्वर है। रेडिस परियोजना तब शुरू हुई जब रेडिस के मूल डेवलपर, सल्वाटोर सैनफिलिपो, उपनाम एंटीरेज़, एक वास्तविक समय कंप्यूटिंग | रीयल-टाइम वेब लॉग विश्लेषक विकसित करके अपने इतालवी स्टार्टअप की स्केलेबिलिटी में सुधार करने की कोशिश कर रहे थे। पारंपरिक डेटाबेस सिस्टम का उपयोग करके कुछ प्रकार के वर्कलोड को स्केल करने में महत्वपूर्ण समस्याओं का सामना करने के बाद, सैनफिलिपो ने 2009 में टी.सी.एल  में रेडिस के अवधारणा संस्करण के पहले प्रमाण का प्रोटोटाइप बनाना शुरू किया। बाद में सैनफिलिपो ने उस प्रोटोटाइप का सी भाषा में अनुवाद किया और पहला डेटा प्रकार, सूची लागू किया। परियोजना को आंतरिक रूप से सफलता के साथ उपयोग करने के कुछ हफ्तों के बाद, सैनफिलिपो ने  हैकर समाचार  पर परियोजना की घोषणा करते हुए इसे खोलने का फैसला किया। इस परियोजना को विशेष रूप से रूबी समुदाय के बीच लोकप्रियता मिलनी शुरू हुई, गिटहब और  Instagram  इसे अपनाने वाली पहली कंपनियों में से थे। मार्च, 2010 में VMware  द्वारा सैनफिलिपो को काम पर रखा गया था। मई, 2013 में, रेडिस को निर्णायक सॉफ्टवेयर  (एक वीएमवेयर स्पिन-ऑफ) द्वारा प्रायोजित किया गया था। जून 2015 में, विकास रेडिस लैब्स द्वारा प्रायोजित हो गया। अक्टूबर 2018 में, रेडिस 5.0 जारी किया गया था, जिसमें रेडिस स्ट्रीम की शुरुआत की गई थी - एक नई डेटा संरचना जो एक ही कुंजी पर स्वचालित, समय-आधारित अनुक्रम के साथ कई फ़ील्ड और स्ट्रिंग मानों को संग्रहीत करने की अनुमति देती है। जून 2020 में, साल्वाटोर सैनफिलिपो ने रेडिस अनुरक्षक के रूप में पद छोड़ दिया।

अन्य डेटाबेस प्रणालियों से अंतर
रेडिस ने एक ऐसे सिस्टम के विचार को लोकप्रिय बनाया जिसे एक ही समय में स्टोर और कैश (कंप्यूटिंग) माना जा सकता है। इसे इस तरह से डिज़ाइन किया गया था कि डेटा को हमेशा संशोधित किया जाता है और मुख्य कंप्यूटर मेमोरी से पढ़ा जाता है, लेकिन डिस्क पर ऐसे प्रारूप में भी संग्रहीत किया जाता है जो यादृच्छिक डेटा एक्सेस के लिए अनुपयुक्त है। सिस्टम के पुनरारंभ होने के बाद ही स्वरूपित डेटा को मेमोरी में पुनर्निर्मित किया जाता है।

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

लोकप्रियता
मासिक डीबी-इंजन रैंकिंग के अनुसार, रेडिस अक्सर सबसे लोकप्रिय कुंजी-मूल्य डेटाबेस है। रेडिस को उपयोगकर्ता समीक्षाओं के आधार पर उपयोगकर्ता संतुष्टि और बाज़ार में उपस्थिति के मामले में #4 NoSQL डेटाबेस का दर्जा दिया गया है। कंटेनरों में सबसे लोकप्रिय NoSQL डेटाबेस, और वेबसाइट stackshare.io की रैंकिंग के अनुसार 2019 का #4 डेटा स्टोर। इसे 2017, 2018, 2019, 2020 और 2021 में स्टैक ओवरफ़्लो डेवलपर सर्वेक्षण में सबसे पसंदीदा डेटाबेस चुना गया था।

समर्थित भाषाएँ
संस्करण 2.6 के बाद से, रेडिस लुआ (प्रोग्रामिंग भाषा) भाषा में सर्वर साइड  स्क्रिप्टिंग की सुविधा प्रदान करता है। कई प्रोग्रामिंग भाषाओं में क्लाइंट साइड पर रेडिस भाषा बाइंडिंग होती है, जिनमें शामिल हैं: ActionScript, सी (प्रोग्रामिंग भाषा), सी++, सी शार्प (प्रोग्रामिंग भाषा)|सी#, चिकन (योजना कार्यान्वयन), क्लोजर,  सामान्य लिस्प , क्रिस्टल (प्रोग्रामिंग भाषा), डी (प्रोग्रामिंग भाषा), डार्ट (प्रोग्रामिंग भाषा), एम्बरकैडेरो डेल्फ़ी , एलिक्सिर (प्रोग्रामिंग भाषा), एरलांग (प्रोग्रामिंग भाषा), गो (प्रोग्रामिंग भाषा), हास्केल (प्रोग्रामिंग भाषा),  मिला हुआ , आईओ (प्रोग्रामिंग भाषा), जावा (प्रोग्रामिंग भाषा), निम (प्रोग्रामिंग भाषा), सर्वर-साइड जावास्क्रिप्ट (नोड) .js), जूलिया (प्रोग्रामिंग भाषा), लुआ (प्रोग्रामिंग भाषा),  उद्देश्य सी , ओकैमल, पर्ल, पीएचपी, प्योर डेटा, पायथन (प्रोग्रामिंग भाषा), आर (प्रोग्रामिंग भाषा), रैकेट (प्रोग्रामिंग भाषा), रूबी (प्रोग्रामिंग भाषा), रस्ट (प्रोग्रामिंग भाषा), स्काला (प्रोग्रामिंग भाषा), स्मॉलटॉक, स्विफ्ट (प्रोग्रामिंग भाषा), और टीसीएल। इन भाषाओं में कई क्लाइंट सॉफ़्टवेयर प्रोग्राम मौजूद हैं।

डेटा प्रकार
रेडिस मानों के प्रकारों के लिए कुंजियाँ मैप करता है। रेडिस और अन्य संरचित भंडारण प्रणालियों के बीच एक महत्वपूर्ण अंतर यह है कि रेडिस न केवल स्ट्रिंग (कंप्यूटर विज्ञान) का समर्थन करता है, बल्कि अमूर्त डेटा प्रकारों का भी समर्थन करता है:

मान का प्रकार यह निर्धारित करता है कि मूल्य के लिए कौन से ऑपरेशन (जिन्हें कमांड कहा जाता है) उपलब्ध हैं। रेडिस उच्च-स्तरीय, परमाणु, सर्वर-साइड संचालन जैसे प्रतिच्छेदन, संघ और सूचियों, सेटों और क्रमबद्ध सेटों के सेट और सॉर्टिंग के बीच अंतर का समर्थन करता है।
 * स्ट्रिंग्स की सूची (कंप्यूटिंग)।
 * स्ट्रिंग्स का सेट (सार डेटा प्रकार) (गैर-दोहराए जाने वाले अवर्गीकृत तत्वों का संग्रह)
 * स्ट्रिंग्स के क्रमबद्ध सेट (चल बिन्दु संख्या द्वारा ऑर्डर किए गए गैर-दोहराए जाने वाले तत्वों का संग्रह जिसे स्कोर कहा जाता है)
 * हैश तालिकाएँ जहाँ कुंजियाँ और मान स्ट्रिंग हैं
 * अनुमानित सेट कार्डिनैलिटी आकार अनुमान के लिए हाइपरलॉगलॉग का उपयोग किया जाता है, जो अप्रैल 2014 में रेडिस 2.8.9 के बाद से उपलब्ध है। * उपभोक्ता समूहों के साथ प्रविष्टियों की स्ट्रीम (कंप्यूटिंग), आपको एक ही कुंजी पर स्वचालित, समय-आधारित अनुक्रम के साथ कई फ़ील्ड और स्ट्रिंग मानों को संग्रहीत करने की अनुमति देती है, जो अक्टूबर 2018 में रेडिस 5.0 के बाद से उपलब्ध है।
 * जियोहैश तकनीक के कार्यान्वयन के माध्यम से भू-स्थानिक डेटा, रेडिस 3.2 के बाद से उपलब्ध है।

रेडिस मॉड्यूल एपीआई के आधार पर अधिक डेटा प्रकार समर्थित हैं:
 * JSON - RedisJSON ECMA-404 (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन डेटा इंटरचेंज स्टैंडर्ड) को मूल डेटा प्रकार के रूप में लागू करता है।
 * ग्राफ (असतत_गणित) - रेडिसग्राफ एक क्वेरी योग्य संपत्ति ग्राफ लागू करता है
 * समय श्रृंखला - RedisTimeSeries एक समय श्रृंखला डेटा संरचना लागू करता है
 * ब्लूम फिल्टर, कोयल फिल्टर, काउंट-मिन स्केच, और टॉप-के - रेडिसब्लूम रेडिस के लिए संभाव्य डेटा संरचनाओं का एक सेट लागू करता है

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

डिफ़ॉल्ट रूप से, Redis कम से कम हर 2 सेकंड में फ़ाइल सिस्टम पर डेटा लिखता है, यदि आवश्यक हो तो अधिक या कम मजबूत विकल्प उपलब्ध होते हैं। डिफ़ॉल्ट सेटिंग्स पर पूर्ण सिस्टम विफलता की स्थिति में, केवल कुछ सेकंड का डेटा खो जाएगा।

प्रतिकृति
रेडिस प्रतिकृति (कंप्यूटिंग)|मास्टर-प्रतिकृति प्रतिकृति का समर्थन करता है। किसी भी Redis सर्वर से डेटा को किसी भी संख्या में प्रतिकृतियों में दोहराया जा सकता है। एक प्रतिकृति दूसरी प्रतिकृति की मास्टर हो सकती है। यह रेडिस को एकल-रूटेड प्रतिकृति वृक्ष को लागू करने की अनुमति देता है। रेडिस प्रतिकृतियों को उदाहरणों के बीच जानबूझकर और अनजाने में असंगतता की अनुमति देते हुए, लिखने को स्वीकार करने के लिए कॉन्फ़िगर किया जा सकता है। पब्लिश-सब्सक्राइब पैटर्न | पब्लिश-सब्सक्राइब सुविधा पूरी तरह से कार्यान्वित है, इसलिए प्रतिकृति का ग्राहक एक चैनल की सदस्यता ले सकता है और प्रतिकृति ट्री के ऊपर कहीं भी मास्टर को प्रकाशित संदेशों की पूरी फ़ीड प्राप्त कर सकता है। प्रतिकृति पढ़ने (लेकिन लिखने के लिए नहीं) स्केलेबिलिटी या डेटा अतिरेक के लिए उपयोगी है।

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

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

मामलों का प्रयोग करें
डेटाबेस डिज़ाइन की प्रकृति के कारण, विशिष्ट उपयोग के मामले सत्र कैशिंग, पूर्ण पृष्ठ कैश, संदेश कतार अनुप्रयोग, लीडरबोर्ड और दूसरों के बीच गिनती हैं। पब्लिश-सब्सक्राइब मैसेजिंग प्रतिमान सर्वरों के बीच वास्तविक समय संचार की अनुमति देता है।

अमेज़न वेब सेवाएँ रेडिस के लिए अमेज़ॅन इलास्टीकैश कैश नामक एक प्रबंधित रेडिस सेवा प्रदान करती है, गूगल क्लाउड प्लेटफार्म क्लाउड मेमोरीस्टोर नामक एक प्रबंधित रेडिस सेवा प्रदान करता है, Microsoft Microsoft Azure में Redis के लिए Azure कैश ऑफ़र करता है, और अलीबाबा समूह अलीबाबा क्लाउड में रेडिस के लिए ApsaraDB की पेशकश करता है।

उपयोगकर्ता
रेडिस का उपयोग ट्विटर जैसी कंपनियों में किया जा रहा है, AirBnB tinder याहू एडोब Hulu और अमेज़न

यह भी देखें

 * संघर्ष-मुक्त प्रतिकृति डेटा प्रकार
 * मेमकैच्ड
 * इन्फिनिसपैन

अग्रिम पठन

 * Isabel Drost and Jan Lehnard (29 October 2009), Happenings: NoSQL Conference, Berlin, The H. Slides for the Redis presentation. Summary.
 * Billy Newport (IBM): "Evolving the Key/Value Programming Model to a Higher Level" Qcon Conference 2009 San Francisco.
 * A Mishra: "Install and configure Redis on Centos/ Fedora server".
 * E. Mouzakitis: "Monitoring Redis Performance"