Redis (रिमोट डिक्शनरी सर्वर) एक इन-मेमोरी की-वैल्यू डेटाबेस है, जिसका उपयोग वितरित कैश और मैसेज ब्रोकर के रूप में किया जाता है, जिसमें वैकल्पिक स्थायित्व होता है। चूंकि यह सभी डेटा को मेमोरी में रखता है और अपने डिज़ाइन के कारण, Redis कम-विलंबता वाली रीड और राइट प्रदान करता है, जिससे यह उन उपयोग मामलों के लिए विशेष रूप से उपयुक्त है जिन्हें कैश की आवश्यकता होती है। यह परियोजना साल्वाटोर सैनफिलिप्पो द्वारा 2009 में विकसित और अनुरक्षित की गई थी, और कई प्रायोजनों और लाइसेंसिंग परिवर्तनों के माध्यम से विकसित होकर व्यापक रूप से अपनाया गया डेटा इंफ्रास्ट्रक्चर घटक बन गई है।
Redis एक डेटा स्टोर और कैश दोनों के रूप में कार्य करता है, जो इसे पारंपरिक रिलेशनल डेटाबेस प्रबंधन प्रणालियों (RDBMS) से अलग करता है। इसका डेटा मॉडल SQL क्वेरी के बजाय अमूर्त डेटा प्रकारों पर आधारित है, और यह द्वितीयक इंडेक्स या एग्रीगेशन के बिना सीधे पुनर्प्राप्ति के लिए अनुकूलित है। यह डिज़ाइन, इसके इन-मेमोरी संचालन के साथ मिलकर, कई वर्कलोड के लिए सब-मिलीसेकंड प्रतिक्रिया समय सक्षम करता है।
इतिहास
Redis परियोजना तब शुरू हुई जब साल्वाटोर सैनफिलिप्पो (उपनाम एंटीरेज़) अपने इतालवी स्टार्टअप की स्केलेबिलिटी में सुधार करने की कोशिश कर रहे थे और एक रीयल-टाइम वेब लॉग विश्लेषक विकसित कर रहे थे। पारंपरिक डेटाबेस प्रणालियों का उपयोग करके कुछ प्रकार के वर्कलोड को स्केल करने में महत्वपूर्ण समस्याओं का सामना करने के बाद, सैनफिलिप्पो ने 2009 में Tcl में Redis का पहला प्रूफ ऑफ कॉन्सेप्ट संस्करण प्रोटोटाइप करना शुरू किया। बाद में, सैनफिलिप्पो ने उस प्रोटोटाइप को C भाषा में अनुवादित किया और पहला डेटा प्रकार, सूची (list), लागू किया। कुछ हफ्तों तक आंतरिक रूप से सफलतापूर्वक परियोजना का उपयोग करने के बाद, सैनफिलिप्पो ने इसे ओपन सोर्स करने का निर्णय लिया, और परियोजना की घोषणा Hacker News पर की। परियोजना को गति मिलनी शुरू हुई, विशेष रूप से Ruby समुदाय के बीच, जिसमें GitHub और Instagram पहली कंपनियों में से थीं जिन्होंने इसे अपनाया।
सैनफिलिप्पो को मार्च 2010 में VMware द्वारा नियुक्त किया गया था। मई 2013 में, Redis को Pivotal Software (एक VMware स्पिन-ऑफ) द्वारा प्रायोजित किया गया था। जून 2015 में, विकास Redis Ltd. द्वारा प्रायोजित हो गया। अक्टूबर 2018 में, Redis 5.0 जारी किया गया, जिसमें Redis Stream पेश किया गया, एक नया डेटा संरचना जो एक ही कुंजी पर कई फ़ील्ड और स्ट्रिंग मानों के भंडारण को स्वचालित, समय-आधारित अनुक्रम के साथ अनुमति देता है। जून 2020 में, सैनफिलिप्पो ने Redis के एकमात्र अनुरक्षक के रूप में पद छोड़ दिया, जिसके बाद योस्सी गोटलिब और ओरान अग्रा ने पदभार संभाला। सैनफिलिप्पो दिसंबर 2024 में Redis में लौट आए।
लाइसेंसिंग विकास
अगस्त 2018 में, पर्याप्त मुआवजे के बिना प्रबंधित क्लाउड प्रदाताओं द्वारा सॉफ्टवेयर के उपयोग को नियंत्रित करने के लिए, Redis Ltd. ने घोषणा की कि वह वैकल्पिक Redis मॉड्यूल को GNU Affero General Public License (AGPL) से Apache License में पुनः लाइसेंस देगा, लेकिन "कॉमन्स क्लॉज़" के रूप में ज्ञात एक परिशिष्ट के अधीन, जो वाणिज्यिक उपयोग को प्रतिबंधित करता है। इसने मॉड्यूल को स्रोत-उपलब्ध बना दिया और वे अब मुक्त सॉफ्टवेयर नहीं रहे। मुख्य Redis सॉफ्टवेयर BSD लाइसेंस के अंतर्गत रहा, जिसमें Redis Ltd. ने इन शर्तों को बनाए रखने की प्रतिबद्धता जताई।
फरवरी 2019 में, लाइसेंसिंग शर्तों पर भ्रम का हवाला देते हुए, Redis मॉड्यूल के लिए Apache License with Commons Clause लाइसेंसिंग शर्तों को "Redis Source Available License" (RSAL) से बदल दिया गया, जो स्पष्ट रूप से मॉड्यूल के वाणिज्यिक उपयोग को "एक डेटाबेस, एक कैशिंग इंजन, एक स्ट्रीम प्रोसेसिंग इंजन, एक सर्च इंजन, एक इंडेक्सिंग इंजन या एक ML/DL/AI सर्विंग इंजन" के हिस्से के रूप में प्रतिबंधित करता है। मुक्त और ओपन सोर्स लाइसेंस के तहत मॉड्यूल के अंतिम संशोधन को समुदाय के सदस्यों द्वारा GoodFORM परियोजना के रूप में फोर्क किया गया था।
मार्च 2024 में, Redis Ltd. ने घोषणा की कि संस्करण 7.4 से शुरू करके, मुख्य Redis सॉफ्टवेयर को RSAL और Server Side Public License (SSPL) के तहत पुनः लाइसेंस दिया जाएगा, जो दोनों स्रोत-उपलब्ध और गैर-मुक्त हैं। Linux Foundation ने बाद में घोषणा की कि वह Redis के अंतिम BSD-लाइसेंस प्राप्त संस्करण को Valkey के रूप में फोर्क करेगा। मई 2025 में, Redis Ltd. ने घोषणा की कि वह संस्करण 8.0 से शुरू होने वाले लाइसेंस को फिर से AGPL में बदल देगा, यह कहते हुए कि फोर्क्स ने विभेदित उत्पादों का "समान स्तर का खेल मैदान" बनाने का अपना लक्ष्य हासिल कर लिया है, और Redis ने लाइसेंस में बदलाव के बाद से "रिकॉर्ड वृद्धि" हासिल की है।
डेटा मॉडल और प्रकार
Redis कुंजियों को मानों के प्रकारों से मैप करता है। Redis कई डेटा प्रकारों का समर्थन करता है जिनमें स्ट्रिंग्स, JavaScript Object Notation (JSON) दस्तावेज़, हैश (फ़ील्ड का एक संग्रह, प्रत्येक फ़ील्ड एक नाम-मान स्ट्रिंग जोड़ी है), सूचियाँ, सेट, वेक्टर सेट और बहुत कुछ शामिल हैं। यह विविधता डेवलपर्स को सरल की-वैल्यू लुकअप से लेकर लीडरबोर्ड या जियोस्पेशियल इंडेक्स के लिए क्रमबद्ध सेट जैसी जटिल डेटा संरचनाओं तक, विविध अनुप्रयोग परिदृश्यों को सीधे Redis के भीतर मॉडल करने की अनुमति देती है।
Redis Query Engine उपयोगकर्ताओं को Redis को एक दस्तावेज़ डेटाबेस, एक वेक्टर डेटाबेस, एक द्वितीयक इंडेक्स और एक सर्च इंजन के रूप में उपयोग करने की अनुमति देता है। Redis Query Engine के साथ, उपयोगकर्ता हैश और JSON दस्तावेज़ों के लिए इंडेक्स परिभाषित कर सकते हैं, और वेक्टर सर्च, फुल-टेक्स्ट सर्च, जियोस्पेशियल क्वेरी और एग्रीगेशन के लिए एक समृद्ध क्वेरी भाषा का उपयोग कर सकते हैं। यह Redis को एक साधारण कैश से आगे बढ़ाकर एक बहु-मॉडल डेटा प्लेटफ़ॉर्म में विस्तारित करता है, जो लचीली क्वेरी क्षमताओं की आवश्यकता वाले आधुनिक अनुप्रयोगों का समर्थन करता है।
मैसेजिंग और ट्रांज़ेक्शन
Redis Pub/Sub (प्रकाशित/सदस्यता का संक्षिप्त रूप) एक हल्की मैसेजिंग क्षमता है। प्रकाशक एक चैनल पर संदेश भेजते हैं, और सदस्य उस चैनल से संदेश प्राप्त करते हैं। यह पैटर्न आमतौर पर रीयल-टाइम सूचनाओं, चैट सिस्टम और इवेंट-संचालित आर्किटेक्चर के लिए उपयोग किया जाता है जहां अलग-अलग घटकों को अतुल्यकालिक रूप से संवाद करने की आवश्यकता होती है।
एक Redis ट्रांज़ेक्शन एक ही चरण में कमांड के समूह के निष्पादन की अनुमति देता है। किसी अन्य क्लाइंट द्वारा भेजा गया अनुरोध कभी भी ट्रांज़ेक्शन के निष्पादन के दौरान सेवा नहीं दिया जाएगा। यह गारंटी देता है कि कमांड एक एकल पृथक ऑपरेशन के रूप में निष्पादित होते हैं। Redis ट्रांज़ेक्शन एक क्यू-एंड-एक्ज़ीक्यूट मॉडल पर आधारित हैं, जहां कमांड को क्यू किया जाता है और फिर बिना किसी रुकावट के क्रमिक रूप से निष्पादित किया जाता है, जिससे बैच के लिए परमाणुता सुनिश्चित होती है।
Redis उपयोगकर्ता सर्वर पर Lua स्क्रिप्ट अपलोड और निष्पादित भी कर सकते हैं। यह सुविधा जटिल संचालन को सर्वर साइड पर परमाणु रूप से करने में सक्षम बनाती है, नेटवर्क राउंड-ट्रिप को कम करती है और स्थिरता सुनिश्चित करती है। Lua स्क्रिप्टिंग विशेष रूप से कस्टम व्यावसायिक तर्क को लागू करने के लिए उपयोगी है जिसे डेटा के करीब चलना चाहिए।
स्थायित्व और दीर्घकालिकता
Redis आमतौर पर पूरे डेटासेट को मेमोरी में रखता है। संस्करण 2.4 तक वर्चुअल मेमोरी का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता था जिसमें कुछ डेटासेट डिस्क पर संग्रहीत होता था, लेकिन यह सुविधा अब अप्रचलित है। Redis में स्थायित्व दो अलग-अलग तरीकों से प्राप्त किया जा सकता है: स्नैपशॉटिंग, जहां डेटासेट को नियमित अंतराल पर मेमोरी से डिस्क पर अतुल्यकालिक रूप से बाइनरी डंप के रूप में स्थानांतरित किया जाता है, Redis RDB डंप फ़ाइल प्रारूप का उपयोग करके; या जर्नलिंग, जहां डेटासेट को संशोधित करने वाले प्रत्येक ऑपरेशन का रिकॉर्ड एक पृष्ठभूमि प्रक्रिया में एक अपेंड-ओनली फ़ाइल (AOF) में जोड़ा जाता है। Redis पृष्ठभूमि में अपेंड-ओनली फ़ाइल को फिर से लिख सकता है ताकि इसे संकुचित किया जा सके और पुनर्प्राप्ति समय कम किया जा सके।
Redis कार्यान्वयन डेटा रखने वाली प्रक्रिया को डुप्लिकेट करने के लिए fork सिस्टम कॉल का उपयोग करता है। यह मूल प्रक्रिया को क्लाइंट की सेवा जारी रखने की अनुमति देता है जबकि चाइल्ड प्रक्रिया इन-मेमोरी डेटा को डिस्क पर स्थायी रूप से संग्रहीत करती है। यह डिज़ाइन स्थायित्व संचालन के दौरान डाउनटाइम को कम करता है और उच्च उपलब्धता बनाए रखने के साथ-साथ डेटा दीर्घकालिकता सुनिश्चित करने में Redis की क्षमता का एक प्रमुख कारक है।
अन्य डेटाबेस प्रणालियों से अंतर
Redis एक ऐसी प्रणाली है जो डेटा स्टोर और कैश दोनों के रूप में कार्य करती है। डेटा को मुख्य कंप्यूटर मेमोरी से संशोधित और पढ़ा जाता है, साथ ही इसे डिस्क पर यादृच्छिक पहुंच के बजाय अनुक्रमिक पहुंच के लिए अनुकूलित प्रारूप में स्थायी रूप से संग्रहीत किया जाता है। स्वरूपित डेटा को केवल सिस्टम के पुनरारंभ होने पर मेमोरी में पुनर्निर्मित किया जाता है। यह दृष्टिकोण पारंपरिक डेटाबेस के विपरीत है जो मुख्य रूप से डिस्क-आधारित भंडारण और यादृच्छिक पहुंच पैटर्न पर निर्भर करते हैं।
Redis एक डेटा मॉडल का उपयोग करता है जो रिलेशनल डेटाबेस प्रबंधन प्रणाली (RDBMS) से भिन्न होता है। कमांड डेटाबेस इंजन द्वारा निष्पादित की जाने वाली क्वेरी के बजाय अमूर्त डेटा प्रकारों पर संचालन निर्दिष्ट करते हैं। डेटा को सीधे पुनर्प्राप्ति के लिए डिज़ाइन की गई संरचनाओं में संग्रहीत किया जाता है। यह द्वितीयक इंडेक्स, एग्रीगेशन या पारंपरिक RDBMS में सामान्य अन्य सुविधाओं पर निर्भर नहीं करता है। यह सरलता और इन-मेमोरी संचालन पर ध्यान केंद्रित करना Redis को विशिष्ट एक्सेस पैटर्न के लिए असाधारण रूप से तेज़ बनाता है, लेकिन इसका मतलब यह भी है कि जटिल विश्लेषणात्मक क्वेरी अन्य प्रणालियों के लिए बेहतर अनुकूल हैं।
आधुनिक उपयोग और पारिस्थितिकी तंत्र
1 मई 2025 तक, Redis के सभी संस्करणों के लिए 8.0 से शुरू करके, सभी डेटा प्रकार एक ही पैकेज में शामिल हैं और Redis Source Available License v2 के तहत उपलब्ध हैं। पहले कुछ डेटा प्रकार अलग थे और इसलिए विभिन्न लाइसेंसों के तहत उपलब्ध थे। यह समेकन उपयोगकर्ताओं के लिए तैनाती और लाइसेंसिंग को सरल बनाता है, जिससे Redis एक अधिक सुसंगत प्लेटफ़ॉर्म बन जाता है।
Redis कई प्रौद्योगिकी स्टैक में एक मौलिक घटक बन गया है, जिसे अक्सर क्लाउड प्रदाताओं और प्रमुख क्लाउड प्लेटफ़ॉर्म के साथ कैशिंग, सत्र प्रबंधन और रीयल-टाइम एनालिटिक्स के लिए उपयोग किया जाता है। इसकी कम-विलंबता विशेषताएं इसे AI और मशीन लर्निंग अनुप्रयोगों के लिए भी उपयुक्त बनाती हैं जिन्हें मॉडल सर्विंग या फीचर स्टोर के लिए तेज़ डेटा एक्सेस की आवश्यकता होती है। Redis Query Engine का वेक्टर सर्च के लिए समर्थन जनरेटिव AI और बड़े भाषा मॉडल अनुप्रयोगों की बढ़ती मांग के साथ संरेखित है जो एम्बेडिंग पर समानता खोज पर निर्भर करते हैं।