रेडिस

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

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

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

रेडिस को बीएसडी 3-क्लॉज लाइसेंस के अनुसार जारी किया गया है।

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

मई, 2013 में, रेडिस को निर्णायक सॉफ्टवेयर (एक वीएमवेयर स्पिन-ऑफ) द्वारा प्रायोजित किया गया था।

जून 2015 में, विकास रेडिस लैब्स द्वारा प्रायोजित हो गया था।

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

जून 2020 में, साल्वाटोर सैनफिलिपो ने रेडिस अनुरक्षक के रूप में पद छोड़ दिया था।

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

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

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

समर्थित लैंग्वेजएँ
संस्करण 2.6 के बाद से, रेडिस लुआ (प्रोग्रामिंग लैंग्वेज) लैंग्वेज में सर्वर साइड स्क्रिप्टिंग की सुविधा प्रदान करता है। कई प्रोग्रामिंग लैंग्वेजओं में क्लाइंट साइड पर रेडिस लैंग्वेज बाइंडिंग होती है, जिनमें शामिल है: एक्शन स्क्रिप्ट, सी (प्रोग्रामिंग लैंग्वेज), सी++, सी शार्प (प्रोग्रामिंग लैंग्वेज)|सी#, चिकन (योजना कार्यान्वयन), क्लोजर, सामान्य लिस्प, क्रिस्टल (प्रोग्रामिंग लैंग्वेज), डी (प्रोग्रामिंग लैंग्वेज), डार्ट (प्रोग्रामिंग लैंग्वेज), एम्बरकैडेरो डेल्फ़ी , एलिक्सिर (प्रोग्रामिंग लैंग्वेज), एरलांग (प्रोग्रामिंग लैंग्वेज), गो (प्रोग्रामिंग लैंग्वेज), हास्केल (प्रोग्रामिंग लैंग्वेज), मिला हुआ , आईओ (प्रोग्रामिंग लैंग्वेज), जावा (प्रोग्रामिंग लैंग्वेज), निम (प्रोग्रामिंग लैंग्वेज), सर्वर-साइड जावास्क्रिप्ट (नोड) .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 नोड्स तक स्केल कर सकता है, स्वीकार्य लेखन सुरक्षा प्राप्त कर सकता है और कुछ नोड्स विफल होने पर संचालन जारी रख सकता है।

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

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

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

यह भी देखें

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

अग्रिम पठन

 * 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"