.NET और Redis के लिए एक फ्लुएंट API और ऑब्जेक्ट मॉडल
Redis एक शानदार तकनीक है जिसे लाखों डेवलपर्स दो कारणों से पसंद करते हैं: गति और सरलता। Redis एक सहज नेटिव इंटरफेस प्रदान करता है जो प्रोग्रामर द्वारा पहले से ज्ञात डेटा संरचनाओं में तार्किक रूप से व्यवस्थित है। इसके अलावा, वे संरचनाएं उपयोग में सरल और शानदार रूप से अनुकूलित हैं। गति और सरलता के इस अंतिम मिश्रण के लिए हम .NET के लिए एक नई क्लाइंट लाइब्रेरी, Redis OM के रिलीज के साथ लक्ष्य बना रहे हैं।
Redis OM .NET क्या है?
Redis OM Redis के लिए ऑब्जेक्ट मैपिंग और बहुत कुछ है। Redis OM के पीछे प्रेरणा सवाल का जवाब देना है "डेवलपर्स सभी Redis कमांड सीखे बिना Redis से अद्भुत लाभ कैसे प्राप्त कर सकते हैं?" इस पहले पूर्वावलोकन रिलीज के लिए, हम सवाल को संबोधित करना चाह रहे हैं, "हम Redis में अपने डोमेन ऑब्जेक्ट को कैसे स्टोर और ढूंढ सकते हैं?" Redis OM .NET का पूर्वावलोकन रिलीज एक ऑब्जेक्ट मैपर, एक सेकेंडरी इंडेक्स बिल्डर, और एक सरलीकृत और शक्तिशाली क्वेरी बिल्डर है। यह सब आपको Redis के साथ अपने डोमेन ऑब्जेक्ट को स्टोर और ढूंढने में मदद करने की दिशा में तैयार है।
Redis मॉड्यूल
मॉड्यूल API Redis के लिए एक गेम चेंजर रहा है। मॉड्यूल प्लेटफॉर्म में जबरदस्त लचीलापन जोड़ते हुए Redis के लिए कुछ आवश्यक सुविधाएं प्रदान करते हैं। RedisJSON, विशेष रूप से, सेकेंडरी इंडेक्सिंग और डॉक्यूमेंट मॉडलिंग के आसपास भारी मात्रा में कार्यक्षमता को अनलॉक करता है। जबकि Redis OM कोर Redis के साथ अच्छा काम करता है, Redis OM वास्तव में तब अपनी गति पकड़ता है जब आप RedisJSON जोड़ते हैं, जो ऑब्जेक्ट्स को मॉडल करने और Redis में उन्हें क्वेरी करने के लिए एक समृद्ध और शक्तिशाली API बनाने के लिए RedisJSON का पूरा लाभ उठाता है।
क्षमताएं
Redis OM .NET के पूर्वावलोकन संस्करण में चार प्राथमिक क्षमताएं हैं:
- ऑब्जेक्ट मॉडलिंग
- इंडेक्स निर्माण
- फ्लुएंट क्वेरीज
- फ्लुएंट एग्रीगेशन
यह कैसे काम करता है
Redis OM के साथ उठने और चलने से पहले, आपको अपने प्रोजेक्ट में पैकेज इंस्टॉल करना होगा। ऐसा करने के लिए, बस
dotnet add package Redis.OMचलाएं। Redis OM लाइब्रेरी के भीतर प्राथमिक कनेक्शन लॉजिक
RedisConnectionProviderमें मौजूद है। यह प्रोवाइडर तीन अलग-अलग ऑब्जेक्ट तक पहुंच प्रदान करता है जिनका उपयोग आप Redis के साथ संवाद करने के लिए कर सकते हैं:
IRedisConnection
आपकोExecute
औरExecuteAsync
विधियों का उपयोग करके सीधे Redis के साथ इंटरफेस करने देता है।RedisCollection<T>
ऑब्जेक्ट्स का एक जेनेरिकली टाइप किया गया संग्रह है। यह इंटरफेस फ्लुएंट क्वेरी API प्रदान करता है।RedisAggregationSet<T>
आपको Redis में एग्रीगेशन पाइपलाइन बनाने और निष्पादित करने की अनुमति देता है एक फ्लुएंट API का उपयोग करके।
Redis से कनेक्ट करना
ASP.NET Core में Redis OM को Redis से कनेक्ट करने के लिए, आपको
RedisConnectionProviderके एक इंस्टेंस को सिंगलटन के रूप में इंजेक्ट करना चाहिए। ऐसा करने के लिए, आप एक Redis URI का उपयोग करेंगे। यदि आप .NET 6 का उपयोग कर रहे हैं, तो इसका मतलब है कि आपकी
program.csफ़ाइल खोलना और जोड़ना:
.NET 5 के लिए, जो Startup.cs फ़ाइल का उपयोग करता है, आप
Startup.ConfigureServicesमें निम्नलिखित जोड़ सकते हैं:
ऑब्जेक्ट्स का मॉडलिंग और खोज
RedisJSON आपको Redis में JSON ऑब्जेक्ट्स को नेटिव रूप से स्टोर करने और उन ऑब्जेक्ट्स को क्वेरी करने की अनुमति देता है। लेकिन अपने JSON को क्वेरी करने के लिए, आपको पहले अपने इंडेक्स को परिभाषित करना होगा। इस प्रक्रिया को आसान बनाने के लिए, हमने Redis OM .NET में एक घोषणात्मक मॉडल पेश किया है जो आपको एक घोषणात्मक इंटरफेस के माध्यम से इन इंडेक्स को परिभाषित करने की अनुमति देता है। यदि आप Redis में स्टोर करने के लिए एक क्लास घोषित करना चाहते हैं और उसके गुणों को इंडेक्स करना चाहते हैं, तो आप क्लास को
Documentविशेषता से सजाते हैं और फिर व्यक्तिगत गुणों को
Indexedया
Searchableविशेषताओं से सजाते हैं।
Indexedएक मानक इंडेक्स का तात्पर्य रखता है, जबकि
Searchableकेवल स्ट्रिंग्स पर लागू होता है और इसका मतलब है कि गुण पूर्ण-पाठ खोज के साथ क्वेरी करने योग्य होगा। अगला, आप अपने नए सजाए गए प्रकार को
IRedisConnection.CreateIndexविधि में पास करके Redis में इंडेक्स बना सकते हैं। इसलिए, उदाहरण के लिए, यदि आप एक इंडेक्स के साथ एक Customer क्लास घोषित करना चाहते हैं, तो आप निम्नलिखित जैसा कुछ करेंगे:
क्वेरी करना
एक इंडेक्स बनने के साथ, आप अब Redis में ऑब्जेक्ट्स को क्वेरी करने के लिए
RedisCollection<T>का उपयोग कर सकते हैं। तो, यदि आपके पास जॉन Redis में एक Customer ऑब्जेक्ट के रूप में संग्रहीत है, तो आप उसे क्वेरी कर सकते हैं:
आप आसानी से रेंज क्वेरी भी कर सकते हैं। उदाहरण के लिए, आइए उन सभी ग्राहकों को ढूंढें जो सेवानिवृत्ति की आयु तक नहीं पहुंचे हैं:
RedisCollectionऔर RedisJSON के साथ, आप LINQ में सामान्य रूप से जैसे समृद्ध और जटिल क्वेरी बना सकते हैं, और Redis OM आपके लिए Redis की क्वेरी भाषा में अनुवाद का प्रबंधन करेगा।
एग्रीगेशन
क्वेरी करने के अलावा, आप Redis एग्रीगेशन का उपयोग एग्रीगेशन पाइपलाइन बनाने के लिए कर सकते हैं जो सभी प्रकार की चीजें कर सकते हैं। उदाहरण के लिए, मान लें कि आप प्रत्येक ग्राहक की 3 साल में उम्र ढूंढना चाहते हैं, आप एक सीधे अंकगणितीय ऑपरेशन के साथ
Applyअभिव्यक्ति के अंदर ऐसा कर सकते हैं, जो Redis में एक उचित रूप से स्वरूपित एग्रीगेशन पाइपलाइन में अनुवाद करेगा:
आप रिकॉर्ड्स को एक साथ समूहित भी कर सकते हैं और उन पर सारांश आंकड़ों की गणना कर सकते हैं। इसलिए यदि आप ग्राहकों को उनके अंतिम नाम से समूहित करना चाहते हैं, तो आप सारांश आंकड़ों की गणना कर सकते हैं। उदाहरण के लिए, यहां बताया गया है कि आप औसत आयु की गणना कैसे कर सकते हैं:
समापन
यह .NET के लिए Redis OM की क्षमताओं का सिर्फ एक संक्षिप्त अवलोकन है। यदि आप अधिक सीखना चाहते हैं, तो आप ट्यूटोरियल देख सकते हैं और API डॉक्स के माध्यम से देख सकते हैं। हम जल्द ही Redis.OM में और सुविधाएँ जोड़ने की योजना बना रहे हैं, और उस अंत तक, हमें कुछ समुदाय प्रतिक्रिया पसंद आएगी। आएं और इसे आज़माएं। यदि आपको कोई समस्या मिलती है या कुछ ऐसा सोचते हैं जिसे आप लाइब्रेरी में जोड़ना चाहेंगे, तो GitHub पर एक इश्यू खोलें। और स्वाभाविक रूप से, हम समुदाय से योगदान को हमेशा पसंद करते हैं, इसलिए PRs का हमेशा स्वागत है :).