Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Redis

RedisMart:Redis . के साथ एक पूरी तरह से विशेष रुप से प्रदर्शित खुदरा अनुप्रयोग

क्या आपको RedisConf का मुख्य प्रदर्शन याद है? यदि हाँ, तो आपको प्रस्तुत किए गए रिटेल एप्लिकेशन (RedisMart) के पर्दे के पीछे के विकास को देखने में आनंद आ सकता है। यदि नहीं, तो समय आ गया है कि यिफ्ताच और ऐश इसे प्रस्तुत करें। यहां वीडियो का लिंक फिर से दिया गया है:

यह लेख एक श्रृंखला का पहला है। यह आपको उत्पाद कैटलॉग, वितरित रीयल-टाइम इन्वेंट्री, और एआई-पावर्ड उत्पाद खोज को कैसे कार्यान्वित कर सकता है, यह देखकर आपको मुख्य आवश्यकताओं और रेडिसमार्ट रिटेल एप्लिकेशन की संरचना में कुछ अंतर्दृष्टि प्रदान करता है। आप यह भी देखेंगे कि कैसे Redis Enterprise उन सभी कार्यात्मकताओं को शक्ति प्रदान करता है।

आवश्यकताएं

जैसा कि अक्सर सॉफ्टवेयर विकास में होता है, आइए कुछ बुनियादी आवश्यकताओं पर चर्चा करके शुरू करते हैं। यहां कुछ अनौपचारिक रूप से विख्यात उपयोगकर्ता कहानियां दी गई हैं:

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

वास्तुकला    

अब जब हम आवश्यकताओं को जान गए हैं, तो मुझे इस बात का अंदाजा है कि रेडिस हमारी मदद कैसे कर सकता है:

  • RediSearch संख्यात्मक फ़िल्टर, पूर्ण-पाठ खोज, भू-अनुक्रमण, स्कोरिंग और एकत्रीकरण के साथ समृद्ध उत्पाद खोजों को सक्षम बनाता है।
  • Redis Enterprise का एक्टिव-एक्टिव फीचर लीक से हटकर सभी इन्वेंट्री में जियो-रेप्लिकेट रीयल-टाइम अपडेट प्रदान करता है।
  • RedisAI, RedisGears, और RediSearch का उपयोग रीयल-टाइम अनुमान और वेक्टर-समानता खोज के लिए डेटाबेस-एकीकृत मशीन-लर्निंग पाइपलाइन के निर्माण के लिए किया जाता है।
RedisMart:Redis . के साथ एक पूरी तरह से विशेष रुप से प्रदर्शित खुदरा अनुप्रयोग

वहाँ से, निम्नलिखित डिज़ाइन की कल्पना करना बहुत कठिन नहीं था:

RedisMart:Redis . के साथ एक पूरी तरह से विशेष रुप से प्रदर्शित खुदरा अनुप्रयोग

नीले बक्से सेवाओं का प्रतिनिधित्व करते हैं। लाल बॉक्स उन डेटाबेस को दिखाते हैं जो उन सेवाओं द्वारा उपयोग किए जाते हैं।

हमने कुछ माइक्रोसर्विसेज दृष्टिकोणों का अनुसरण किया जैसे:

  • प्रति सेवा एक डेटास्टोर :प्रत्येक सेवा का अपना डेटा स्टोर होता है, और किसी अन्य सेवा के डेटा स्टोर को सीधे एक्सेस करने के बजाय सेवा इंटरफेस के माध्यम से डेटा का आदान-प्रदान किया जाता है।
  • बहुभाषाई दृढ़ता :प्रत्येक सेवा डेटा स्टोर का उपयोग करती है जो उसकी आवश्यकताओं के आधार पर सबसे उपयुक्त है। पॉलीग्लॉट दृढ़ता के बारे में बात करना:रेडिस एक डेटा प्लेटफ़ॉर्म है जो आपको अपनी आवश्यकताओं के अनुरूप डेटा स्टोर बनाने के लिए मॉड्यूल द्वारा प्रदान की जाने वाली विभिन्न विशेषताओं और डेटा मॉडल को संयोजित करने की अनुमति देता है! यह आश्चर्य की बात नहीं है कि हमने रेड बॉक्स को लागू करने के लिए रेडिस और कुछ रेडिस मॉड्यूल का उपयोग किया।

कार्यान्वयन

रेडिसमार्ट एक यूजर इंटरफेस प्रदान करता है जो वेब-शॉप वेब एप्लिकेशन द्वारा परोसा जाता है। RedisMart के पास एक फ्रंटएंड UI (ग्राहक-उन्मुख खुदरा वेबसाइट) और एक बैकएंड UI (इन्वेंट्री के प्रबंधन के लिए) है। हमने सेवाओं का एक समूह लागू किया है जो पर्दे के पीछे के एप्लिकेशन द्वारा लीवरेज किया जाता है।

  • खरीदारी: खरीद सेवा (आश्चर्यजनक रूप से) ग्राहक खरीद को संभालती है।
  • इन्वेंट्री: इन्वेंट्री सेवा इन्वेंट्री के भीतर स्टॉक की मात्रा के बारे में सवालों के जवाब देती है, और जब ग्राहक आइटम खरीदता है तो राशि घट जाती है। Redis Enterprise के एक्टिव-एक्टिव फीचर का लाभ उठाकर अन्य स्थानों में इन्वेंट्री अपडेट को लगभग रीयल-टाइम में इन्वेंट्री में दोहराया जाता है। Redis Enterprise समवर्ती अद्यतनों से निपटने के लिए संघर्ष-मुक्त प्रतिकृति डेटा प्रकारों का लाभ उठाता है। इस मामले में, काउंटर नुकसान को रोकने के लिए एक रीसेट करने योग्य सकारात्मक नकारात्मक काउंटर डेटा प्रकार का उपयोग किया जाता है।
  • उत्पाद कैटलॉग :उत्पाद कैटलॉग सेवा उत्पाद से संबंधित जानकारी प्रदान करती है और उत्पादों को खोजने के लिए परिष्कृत तरीके प्रदान करती है। यह एक Redis डेटाबेस का उपयोग करता है जिसमें RediSearch + RedisJSON मॉड्यूल तैनात हैं। RedisJSON हमें उत्पाद विवरण को सीधे JSON दस्तावेज़ों के रूप में संग्रहीत करने की अनुमति देता है। RediSearch JSON दस्तावेज़ों को अनुक्रमित, क्वेरी और पूर्ण-पाठ खोज कर सकता है। रेडिस एंटरप्राइज की एक्टिव-एक्टिव सुविधा का उपयोग करके उत्पाद अपडेट को आसानी से कई साइटों पर प्रचारित किया जा सकता है।
  • छवि पहचान :अंत में, इमेज रिकग्निशन सर्विस छवियों पर वेक्टर-समानता खोज के लिए AI मॉडल-सर्विंग कार्यक्षमता प्रदान करती है। यह एक Redis डेटाबेस का उपयोग करता है जिसमें RedisGears, RedisAI और RediSearch मॉड्यूल स्थापित हैं। RedisGears हमें डेटा पाइपलाइन बनाने और डेटा के रहने के स्थान के करीब इसे निष्पादित करने की अनुमति देता है। हमने एआई मॉडल की सेवा और अनुमान के लिए रेडिस एआई का लाभ उठाया। एआई मॉडल के आउटपुट के आधार पर समान छवियों की वास्तविक खोज करने के लिए RediSearch का लाभ उठाया जाता है।

जैसा कि पहले उल्लेख किया गया है, यह एक श्रृंखला का पहला लेख है। हमने व्यक्तिगत सेवाओं को कैसे लागू किया, इस बारे में अधिक जानने के लिए कृपया हमारे साथ बने रहें।

RedisMart

अब जब हमने पर्दे के पीछे देखा है, तो देखते हैं कि आवेदन मंच पर कैसा दिखता है।

RedisMart:Redis . के साथ एक पूरी तरह से विशेष रुप से प्रदर्शित खुदरा अनुप्रयोग

होम पेज आपको मुख्य उत्पाद श्रेणियां दिखाता है। किसी श्रेणी पर एक क्लिक उत्पाद कैटलॉग सेवा के माध्यम से ऐसी श्रेणी से संबंधित पहले 16 उत्पादों को वापस करके एक खोज क्वेरी को ट्रिगर करता है।

"उत्पाद खोजें" फ़ील्ड आपको उत्पादों के लिए पूर्ण-पाठ खोज करने की अनुमति देता है। यह निम्नलिखित खोज परिणाम पृष्ठ पर ले जाता है:

RedisMart:Redis . के साथ एक पूरी तरह से विशेष रुप से प्रदर्शित खुदरा अनुप्रयोग

खोज परिणाम पृष्ठ में दो खंड होते हैं:पहलू खोज और वास्तविक परिणाम सूची। खोज परिणामों को और सीमित करने के लिए पहलू खोज का उपयोग किया जा सकता है। आप मुख्य श्रेणी, उप-श्रेणी, मूल्य और रेटिंग के माध्यम से फ़िल्टर करके ऐसा कर सकते हैं। हम ब्लॉग श्रृंखला के भाग दो में RediSearch के साथ इस तरह की एक मुखर खोज को कैसे कार्यान्वित करते हैं, इसके कार्यान्वयन विवरण के बारे में बात करेंगे। मैं आपको RedisMart के डिबग दृश्य पर एक नज़र डालने की अनुमति देता हूँ:

RedisMart:Redis . के साथ एक पूरी तरह से विशेष रुप से प्रदर्शित खुदरा अनुप्रयोग

जैसा कि आप देख सकते हैं, टैग और एकत्रीकरण एक भूमिका निभाते हैं।

ऊपरी दाएं कोने में छोटे कैमरा आइकन पर क्लिक करने से आप किसी ऐसी चीज़ की छवि ले सकते हैं जिसे आप उत्पाद सूची में खोजना चाहते हैं। डौग की निम्न फ़ोटो को हमारे डेटाबेस में कोई अन्य डॉग नहीं मिला…

RedisMart:Redis . के साथ एक पूरी तरह से विशेष रुप से प्रदर्शित खुदरा अनुप्रयोग

...लेकिन इसमें कुछ हेडफ़ोन अच्छे लगे।

RedisMart:Redis . के साथ एक पूरी तरह से विशेष रुप से प्रदर्शित खुदरा अनुप्रयोग

आइए मान लें कि आप हेडफ़ोन की एक जोड़ी पर निर्णय लेते हैं और उन्हें खरीदना चाहते हैं। अपनी पसंद बनाने के बाद, RedisMart आपको उन्हें अपने शॉपिंग कार्ट में जोड़ने की अनुमति देता है। चेकआउट प्रक्रिया के दौरान, आप उन्हें डिलीवर करवाने या उन्हें किसी नज़दीकी स्थान पर एकत्रित करने का निर्णय ले सकते हैं।

RedisMart:Redis . के साथ एक पूरी तरह से विशेष रुप से प्रदर्शित खुदरा अनुप्रयोग

RediSearch की भू-खोज इस स्थानीय पिकअप सुविधा को शक्ति प्रदान करती है। डिबग दृश्य आपको फिर से एक संकेत देता है कि इसे पर्दे के पीछे कैसे महसूस किया जाता है।

RedisMart:Redis . के साथ एक पूरी तरह से विशेष रुप से प्रदर्शित खुदरा अनुप्रयोग

जैसे ही कोई ग्राहक खरीदारी पूरी करता है, स्टॉक में वस्तुओं की संख्या को कम करके इन्वेंट्री सेवा शामिल हो जाती है। यह हमें सीधे एप्लिकेशन के बैकएंड पर लाता है, जो हमें इन्वेंट्री का प्रबंधन करने की अनुमति देता है। RedisMart कल्पना करता है कि प्रत्येक प्रतिकृति साइट पर तत्काल इन्वेंट्री अपडेट कैसे देखे जाते हैं। यूएस (GCP us-central1) में खरीदारी को पलक झपकते ही यूरोप (Azure उत्तर-यूरोप) में दोहराया जाता है।

RedisMart:Redis . के साथ एक पूरी तरह से विशेष रुप से प्रदर्शित खुदरा अनुप्रयोग

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

आप निम्न वीडियो को देखकर एप्लिकेशन को कार्रवाई में देख सकते हैं:

सारांश   

हम आशा करते हैं कि रेडिस के साथ पूर्ण-विशेषताओं वाले खुदरा एप्लिकेशन के निर्माण के बारे में ब्लॉग श्रृंखला के इस पहले भाग को पढ़कर आपको अच्छा लगा होगा। जैसा कि आप देख सकते हैं, रेडिस रीयल-टाइम डेटा प्लेटफ़ॉर्म हमें RediSearch + RedisJSON की दस्तावेज़ डेटाबेस क्षमताओं का लाभ उठाकर उत्पाद जानकारी तक तत्काल पहुंच (100ms से कम एंड-टू-एंड लेटेंसी) जैसी आवश्यकताओं को पूरा करने की अनुमति देता है। RediSearch + RedisGears + RedisAI का संयोजन उत्पाद सूची में समान उत्पादों को खोजने के लिए AI-संचालित छवि खोज को सक्षम बनाता है। इसके अलावा, पहलू और भू-खोज जैसी सुविधाओं को शामिल किया गया था। अंतिम, लेकिन कम से कम, हमने आपको दिखाया कि आप आसानी से Redis Enterprise की सक्रिय-सक्रिय सुविधा के आधार पर एक भू-प्रतिकृति, रीयल-टाइम इन्वेंट्री बना सकते हैं। इन सबके साथ, रेडिस रीयल-टाइम प्लेटफॉर्म खुदरा कंपनियों को समग्र खरीदारी अनुभव को सकारात्मक रूप से प्रभावित करने में मदद करता है, ग्राहकों के लिए सर्वोत्तम संभव पूर्ति अनुभव प्रदान करता है, और सबसे अधिक लागत प्रभावी तरीके से इन्वेंट्री को अनुकूलित करता है।

क्या आप उन व्यक्तिगत सेवाओं के बारे में अधिक जानना चाहते हैं जिन्हें हमने रेडिसमार्ट के लिए लागू किया है? फिर श्रृंखला के अगले ब्लॉग लेख के लिए बने रहें!

इसे स्वयं आजमाना चाहते हैं? रीयल-टाइम डेटा प्लेटफ़ॉर्म के रूप में Redis के साथ अपने हाथों को गंदा करने के लिए यहां कुछ लिंक दिए गए हैं:

  • मॉड्यूल के बारे में अधिक जानकारी
  • github.com/RediSearch
  • github.com/RedisJSON
  • github.com/RedisGears
  • github.com/RedisAI
  • रेडिस एंटरप्राइज क्लाउड
  • सक्रिय-सक्रिय भू-वितरण

क्रेडिट

इस डेमो एप्लिकेशन में योगदान देने वाले सभी लोगों को बहुत-बहुत धन्यवाद:

  • RedisConf के दौरान डेमो एप्लिकेशन प्रस्तुत करने के लिए Yiftach शूलमैन और ऐश साहू
  • रेडिस मार्केटिंग टीम (और विशेष रूप से उडी गोटलिब, ऐश साहू, और डग टिडवेल, और ब्रायसन कोल्स) को डेमो एप्लिकेशन की आवश्यकता सूची में योगदान देने, रेडिसकॉन्फ़ को व्यवस्थित करने, यूआई डिज़ाइन में मदद करने और इस ब्लॉग पोस्ट में योगदान देने के लिए
  • ली>
  • तकनीकी सक्षमता टीम (और विशेष रूप से मार्टिन फोरस्टनर, ग्रेग जॉर्जेस, और डेविड मायर) डेमो एप्लिकेशन को लागू करने, परीक्षण करने और डिजाइन करने के लिए—और इस ब्लॉग पोस्ट में योगदान करने के लिए
  • मॉड्यूल और छवि पहचान सेवा विकसित करने के लिए सीटीओ टीम (और विशेष रूप से लीबेल ईडेलमैन, गाय कोरलैंड)
  • उत्पाद प्रबंधन टीम (और विशेष रूप से पीटर कैलियाउ, इमैनुएल केलर, जोनाथन सॉलोमन, और अमीरम मिज़ने) डेमो एप्लिकेशन की आवश्यकताओं की सूची में योगदान देने और उत्पाद सुविधाएँ प्रदान करने के लिए
  • और वे सभी जिनका हम यहां उल्लेख करना भूल गए हैं

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


  1. एज कैशिंग के साथ 5 एमएस ग्लोबल रेडिस लेटेंसी

    जब डेटाबेस और क्लाइंट एक ही क्षेत्र में हों, तो Redis के साथ 1 ms लेटेंसी आसान होती है। लेकिन अगर आप चाहते हैं कि ग्राहकों को विश्व स्तर पर वितरित किया जाए तो विलंबता 100 एमएस से अधिक हो जाती है। हमने इसे दूर करने के लिए एज कैशिंग का निर्माण किया। एज कैशिंग एज कैशिंग के साथ, सीडीएन की तरह, आरईएसटी

  1. रेडिस @ एज विद क्लाउडफ्लेयर वर्कर्स

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

  1. उदाहरण के साथ Redis GEORADIUSBYMEMBER कमांड - Redis Tutorial

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