Redis के पास सरल Strings से लेकर Redis Streams जैसे शक्तिशाली अमूर्तताओं तक डेटा संरचनाओं का एक बहुमुखी सेट है। नेटिव डेटा प्रकार आपको एक लंबा रास्ता तय कर सकते हैं, लेकिन कुछ उपयोग के मामले हैं जिनके लिए वर्कअराउंड की आवश्यकता हो सकती है। एक उदाहरण Redis में सेकेंडरी इंडेक्स का उपयोग करने की आवश्यकता है ताकि अधिक समृद्ध क्वेरी क्षमताओं के लिए कुंजी-आधारित खोज/लुकअप से आगे जाया जा सके। यद्यपि आप Sorted Sets, Lists, और इसी तरह का उपयोग करके काम पूरा कर सकते हैं, आपको कुछ ट्रेड-ऑफ में फैक्टर करना होगा।
RediSearch दर्ज करें! एक Redis मॉड्यूल के रूप में उपलब्ध, RediSearch एक फर्स्ट-क्लास सेकेंडरी इंडेक्सिंग इंजन के लिए लचीली खोज क्षमताएं प्रदान करता है। यह फुल-टेक्स्ट खोज, ऑटो कंप्लीशन, भौगोलिक इंडेक्सिंग, और कई अन्य जैसी शक्तिशाली सुविधाएं प्रदान करता है।
RediSearch की शक्ति को प्रदर्शित करने के लिए, यह ब्लॉग पोस्ट एक Go सेवा की मदद से Azure Cache for Redis के साथ RediSearch का उपयोग करने का एक व्यावहारिक उदाहरण प्रदान करता है जिसे RediSearch Go क्लाइंट का उपयोग करके बनाया गया है। यह आपको अनुप्रयोगों का एक सेट देने के लिए डिज़ाइन किया गया है जो आपको ट्वीट्स को रियल-टाइम में इनजेस्ट करने और RediSearch का उपयोग करके उन्हें लचीले ढंग से क्वेरी करने देता है।
विशेष रूप से, आप सीखेंगे कि कैसे:
- RediSearch इंडेक्स के साथ काम करें
- विभिन्न RediSearch डेटा प्रकारों का उपयोग करें, जैसे TEXT, NUMERIC, TAG, और अन्य
- RediSearch क्षमताओं को दिखाने के लिए एक एप्लिकेशन कैसे बनाएं
- कुछ कमांड के साथ Azure में सेवा घटकों को कैसे तैनात करें
- RediSearch को क्वेरी करके ट्वीट डेटा का विश्लेषण करें
एप्लिकेशन अवलोकन
जैसा कि उल्लेख किया गया है, उदाहरण सेवा आपको ट्वीट्स को रियल-टाइम में उपभोग करने और उन्हें RediSearch के माध्यम से क्वेरी के लिए उपलब्ध कराने देती है।
इसके दो घटक हैं:
- कंज्यूमर/इंडेक्सर: Twitter Streaming API से पढ़ता है, इंडेक्स बनाता है, और लगातार ट्वीट डेटा (Redis HASHes में) जोड़ता है जैसे ही वे आते हैं।
- खोज सेवा: एक REST API जो आपको RediSearch क्वेरी सिंटैक्स का उपयोग करके ट्वीट्स खोजने की अनुमति देता है।
इस बिंदु पर, मैं इस समाधान को चालू और चालू करने के तरीके में गोता लगाने जा रहा हूं ताकि आप इसे कार्रवाई में देख सकें। हालांकि, यदि आप व्यक्तिगत घटकों के काम करने के तरीके को समझने में रुचि रखते हैं, तो कृपया नीचे कोड वॉक थ्रू सेक्शन और इस ब्लॉग के लिए GitHub रेपो देखें: https://github.com/abhirockzz/redisearch-tweet-analysis।
पूर्वापेक्षाएँ
- शुरू करने के लिए, आपको एक Microsoft Azure खाते की आवश्यकता होगी: यहां मुफ्त में एक प्राप्त करें!
- उपरोक्त सूचीबद्ध सेवा घटकों को Azure Container Instances में नेटिव Docker CLI कमांड का उपयोग करके तैनात किया जाएगा। यह क्षमता Docker और Azure के बीच एकीकरण द्वारा सक्षम है।
- आपको Windows, macOS के लिए Docker Desktop संस्करण 2.3.0.5 या बाद का, या Linux के लिए Docker ACI Integration CLI इंस्टॉल करने की आवश्यकता होगी। Twitter Streaming API का उपयोग करने के लिए, आपको एक Twitter डेवलपर खाते की भी आवश्यकता होगी। यदि आपके पास पहले से एक नहीं है, तो कृपया इन निर्देशों का पालन करें। RediSearch एक्शन में!
इस क्विक-स्टार्ट ट्यूटोरियल का उपयोग करके Azure पर Redis Enterprise टियर कैश सेट अप करके शुरू करें। एक बार जब आप सेट अप पूरा कर लें, तो सुनिश्चित करें कि आपके पास Redis होस्ट नाम और एक्सेस कुंजी आसान है:
हमारी सेवा के दोनों घटक Docker कंटेनर के रूप में उपलब्ध हैं: ट्वीट इंडेक्सिंग सेवा और खोज API सेवा। (यदि आपको अपने स्वयं के Docker इमेज बनाने की आवश्यकता है, तो कृपया GitHub रेपो पर उपलब्ध संबंधित Dockerfile का उपयोग करें।)
अब आप देखेंगे कि इन दोनों को Azure Container Instances में तैनात करना कितना सुविधाजनक है, जो आपको एक प्रबंधित, सर्वरलेस Azure वातावरण में ऑन-डिमांड Docker कंटेनर चलाने की अनुमति देता है।
Azure पर तैनात करें
एक docker-compose.yml फ़ाइल व्यक्तिगत घटकों (tweets-search और tweets-indexer) को परिभाषित करती है। आपको बस अपने Azure Redis इंस्टेंस के साथ-साथ अपने Twitter डेवलपर खाता क्रेडेंशियल्स के लिए मानों को बदलने के लिए इसे अपडेट करना होगा। यहां फ़ाइल अपनी संपूर्णता में है:
एक Azure संदर्भ बनाएं:
GitHub रेपो क्लोन करें:
दोनों सेवा घटकों को एक कंटेनर समूह के भाग के रूप में तैनात करें:
(ध्यान दें कि ACI संदर्भ में वर्तमान में उपलब्ध Docker Compose कमांड docker compose से शुरू होते हैं। यह docker-compose हाइफ़न के साथ समान नहीं है। )
आपको इस तरह का आउटपुट दिखाई देगा:
सेवाओं के शुरू होने की प्रतीक्षा करें, आप Azure पोर्टल भी जांच सकते हैं। एक बार दोनों सेवाएं चालू और चल रही हों, तो आप उनके संबंधित लॉग देख सकते हैं:
अगर सब ठीक रहा, तो tweet-consumer सेवा शुरू हो गई होगी। यह ट्वीट्स की एक स्ट्रीम पढ़ेगा और उन्हें Redis में बनाए रखेगा।
सच्चाई का क्षण!
ट्वीट डेटा को क्वेरी करने का समय। ऐसा करने के लिए, आप एक IP पते और एक पूर्णतः योग्य डोमेन नाम (FQDN) (कंटेनर एक्सेस में अधिक पढ़ें) के साथ Azure Container Instances में REST API तक पहुंच सकते हैं। IP ढूंढने के लिए, docker ps चलाएं और आउटपुट में PORTS सेक्शन की जांच करें (जैसा कि नीचे दिखाया गया है):
अब आप सभी प्रकार की क्वेरीज़ चला सकते हैं! गोता लगाने से पहले, यहां इंडेक्स किए गए गुणों का एक त्वरित विचार है जिनका उपयोग आप अपनी खोज क्वेरीज़ में कर सकते हैं:
(नोट, मैं नीचे दिए गए उदाहरणों में curl का उपयोग करता हूं, लेकिन "REST Client" VS Code के लिए अत्यधिक अनुशंसा करूंगा)
खोज सेवा API के लिए आधार URL सेट करें:
सरल शुरू करें और सभी दस्तावेज़ों को क्वेरी करें (* का उपयोग करके):
आपको इस तरह का आउटपुट दिखाई देगा:
हेडर्स Page-Size और Search-Hits देखें: ये एप्लिकेशन से पास किए जा रहे कस्टम हेडर्स हैं, मुख्य रूप से पेजिनेशन और सीमाओं को प्रदर्शित करने के लिए। हमारे "मुझे सभी दस्तावेज़ दें" क्वेरी के जवाब में, हमें Redis में 12 परिणाम मिले, लेकिन JSON बॉडी ने 10 प्रविष्टियाँ लौटाईं। यह RediSearch Go API के डिफ़ॉल्ट व्यवहार के कारण है, जिसे आप विभिन्न क्वेरी पैरामीटर का उपयोग करके बदल सकते हैं, जैसे:
या, उदाहरण के लिए, iPhone से भेजे गए ट्वीट्स खोजें:
आप हमेशा क्वेरी परिणाम में सभी गुण नहीं चाह सकते। उदाहरण के लिए, यह केवल उपयोगकर्ता (Twitter स्क्रीन नाम) और ट्वीट टेक्स्ट वापस पाने का तरीका है:
उपयोगकर्ता नाम पर क्वेरी के बारे में कैसे (उदाहरण के लिए jo से शुरू होने वाला):
आप क्वेरी में गुणों के संयोजन का भी उपयोग कर सकते हैं:
विशिष्ट हैशटैग वाले ट्वीट्स खोजने के बारे में कैसे? कई हैशटैग (| से अलग) का उपयोग करना संभव है?
हाल ही में biden हैशटैग वाले कितने ट्वीट्स बनाए गए थे, यह पता लगाना चाहते हैं? रेंज क्वेरी का उपयोग करें:
यदि आप ट्वीट्स पर कुछ निर्देशांक जानकारी हथियाने के लिए भाग्यशाली थे, तो आप उन्हें निकालने और फिर coordinates गुण पर क्वेरी करने का प्रयास कर सकते हैं:
ये केवल कुछ उदाहरण हैं। आगे प्रयोग करने और अन्य क्वेरीज़ आज़माने के लिए स्वतंत्र महसूस करें। RediSearch दस्तावेज़ीकरण में यह खंड काम आ सकता है!
महत्वपूर्ण: समाप्त होने के बाद, Azure Container Instances में सेवाओं और संबंधित कंटेनरों को रोकना न भूलें:
Azure पोर्टल का उपयोग करके आपके द्वारा बनाए गए Azure Redis इंस्टेंस को हटाएं।
कोड वॉक थ्रू
यह खंड व्यक्तिगत घटकों के कोड का उच्च-स्तरीय अवलोकन प्रदान करता है। इससे GitHub रेपो में स्रोत कोड को नेविगेट करना आसान हो जाना चाहिए।
ट्वीट्स कंज्यूमर/इंडेक्सर:
Twitter के साथ बातचीत करने के लिए go-twitter लाइब्रेरी का उपयोग किया गया है।
यह Twitter Streaming API से प्रमाणित करता है:
और एक अलग goroutine में ट्वीट्स की एक स्ट्रीम को सुनता है:
नोटिस go index.AddData(tweetToMap(tweet))—यह वह जगह है जहां इंडेक्सिंग घटक लागू होता है। यह Azure Cache for Redis से कनेक्ट होता है:
यह फिर इंडेक्स (और मौजूदा दस्तावेज़ों को भी) को फिर से बनाने से पहले छोड़ देता है:
इंडेक्स और उससे जुड़े दस्तावेज़ों को आपको एक साफ स्थिति के साथ शुरू करने की अनुमति देने के लिए छोड़ दिया जाता है, जो प्रयोग/डेमो को आसान बनाता है। यदि आप चाहें तो इस हिस्से को टिप्पणी करना चुन सकते हैं।
प्रत्येक ट्वीट की जानकारी एक HASH (नाम tweet:<tweet ID>) में HSET ऑपरेशन का उपयोग करके संग्रहीत की जाती है:
ट्वीट्स खोज एक REST API को RediSearch क्वेरी करने के लिए उजागर करता है। सभी विकल्प (क्वेरी सहित) क्वेरी पैरामीटर के रूप में पारित किए जाते हैं। उदाहरण के लिए, https://localhost:8080/search?q=@source:iphone। यह आवश्यक क्वेरी पैरामीटर निकालता है:
q पैरामीटर अनिवार्य है। हालांकि, आप खोज के लिए निम्नलिखित पैरामीटर का भी उपयोग कर सकते हैं:
- fields : यह निर्दिष्ट करने के लिए कि आप परिणाम में कौन से गुण वापस चाहते हैं, और
- offset_limit : यदि आप वह ऑफसेट निर्दिष्ट करना चाहते हैं जहां से आप खोजना शुरू करना चाहते हैं और परिणाम में शामिल करने के लिए दस्तावेज़ों की संख्या (डिफ़ॉल्ट रूप से, ऑफसेट 0 है और सीमा 10 है - RediSearch Go क्लाइंट के अनुसार)।
उदाहरण के लिए:
अंत में, परिणामों पर पुनरावृति की जाती है और JSON (दस्तावेज़ों की सरणी) के रूप में वापस पारित किया जाता है:
इस खंड के लिए बस इतना ही!
Azure Cache for Redis पर Redis Enterprise टियर्स
Redis Enterprise Azure पर Azure Cache for Redis के लिए दो नए टियर्स के रूप में एक नेटिव सेवा के रूप में उपलब्ध है जिसे Microsoft और Redis द्वारा संचालित और समर्थित किया जाता है। यह सेवा डेवलपर्स को Redis Enterprise सुविधाओं के एक समृद्ध सेट तक पहुंच प्रदान करती है, जिसमें RediSearch जैसे मॉड्यूल शामिल हैं। अधिक जानकारी के लिए, इन संसाधनों को देखें:
- Azure Cache for Redis, Enterprise Tiers Are Now Generally Available
- Deepening Our Partnership with Microsoft to Grow Redis Enterprise in the Cloud
- Microsoft and Redis collaborate to give developers new Azure Cache for Redis capabilities
- Redis Enterprise features on Azure Cache for Redis
निष्कर्ष
यह एंड-टू-एंड एप्लिकेशन दर्शाता है कि इंडेक्स के साथ कैसे काम करें, दस्तावेज़ बनाने के लिए रियल-टाइम डेटा इनजेस्ट करें (ट्वीट जानकारी) जिसे RediSearch इंजन द्वारा इंडेक्स किया गया है और फिर उन ट्वीट्स पर अंतर्दृष्टि निकालने के लिए बहुमुखी क्वेरी सिंटैक्स का उपयोग करें।
यह समझना चाहते हैं कि जब आप Redis दस्तावेज़ीकरण पर किसी विषय को खोजते हैं तो पर्दे के पीछे क्या होता है? यह जानने के लिए इस ब्लॉग पोस्ट को देखें कि Redis साइट ने RediSearch के साथ फुल-टेक्स्ट खोज को कैसे शामिल किया! या, शायद आप सर्वरलेस एप्लिकेशन में RediSearch का उपयोग करने का तरीका तलाशने में रुचि रखते हैं?
यदि आप अभी शुरुआत कर रहे हैं, तो RediSearch क्विक स्टार्ट पेज पर जाएं।
यदि आप Azure Cache for Redis में एंटरप्राइज क्षमताओं के बारे में अधिक जानना चाहते हैं, तो आप निम्नलिखित संसाधनों को देख सकते हैं:
- मल्टी ज़ोन रिडंडेंसी और इसे कैसे सेट अप करें
- नेटवर्क आइसोलेशन के लिए प्राइवेट लिंक समर्थन
- सही कैशिंग टियर चुनना
- Enterprise टियर्स के लिए उच्च उपलब्धता