Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

क्या सर्विसस्टैक आरईएसटी एपीआई पर रेडिस के लिए यह एक अच्छा उपयोग-मामला है?

नोएसक्यूएल रेडिस एप्लिकेशन को डिजाइन करते समय क्या सोचना चाहिए

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

प्राथमिक डेटा स्टोर के रूप में Redis के उदाहरण

यहां एक अच्छा लेख है जो रेडिस का उपयोग करके एक साधारण ब्लॉगिंग एप्लिकेशन बनाने के बारे में बताता है:

http://www.servicestack.net/docs/redis-client/designing-nosql-database

आप RedisStackOverflow के स्रोत कोड को Redis का उपयोग करके वास्तविक दुनिया के एक और उदाहरण के लिए देख सकते हैं।

मूल रूप से आपको प्रत्येक प्रकार की वस्तुओं को अलग से स्टोर और लाने की आवश्यकता होगी।

var redisUsers = redis.As<User>();
var user = redisUsers.GetById(1);
var userIsWatching = redisUsers.GetRelatedEntities<Watching>(user.Id);

जिस तरह से आप संस्थाओं के बीच संबंधों को संग्रहीत करते हैं, वह रेडिस के सेट का उपयोग कर रहा है, उदाहरण के लिए:आप उपयोगकर्ता/द्रष्टा संबंधों को अवधारणात्मक रूप से स्टोर कर सकते हैं:

SET["ids:User>Watcher:{UserId}"] = [{watcherId1},{watcherId2},...]

Redis स्कीमा-रहित और बेकार है

आईडी को रेडिस सेट में स्टोर करना बेकार है यानी आप watcherId1 जोड़ सकते हैं एक ही सेट पर कई बार और इसकी केवल एक ही घटना होगी। यह अच्छा है क्योंकि इसका मतलब है कि आपको कभी भी रिश्ते के अस्तित्व की जांच करने की आवश्यकता नहीं है और स्वतंत्र रूप से संबंधित आईडी जोड़ना जारी रख सकते हैं जैसे वे कभी अस्तित्व में नहीं हैं।

संबंधित:एक रेडिस संग्रह (जैसे सूची) को लिखना या पढ़ना जो मौजूद नहीं है, एक खाली संग्रह को लिखने के समान है, यानी जब आप किसी गैर- मौजूदा सूची केवल 0 परिणाम लौटाएगी। यह एक घर्षण-मुक्त और उत्पादकता जीत है क्योंकि आपको उनका उपयोग करने के लिए अपने स्कीमा को सामने से परिभाषित करने की आवश्यकता नहीं है। यद्यपि आपको यह निर्धारित करने की आवश्यकता है कि रेडिस EXISTS ऑपरेशन प्रदान करता है यह निर्धारित करने के लिए कि कोई कुंजी मौजूद है या एक TYPE ऑपरेशन ताकि आप इसके प्रकार को निर्धारित कर सकें।

अपने लेखन पर अपने संबंध/सूचकांक बनाएं

याद रखने वाली एक बात यह है कि रेडिस में कोई अंतर्निहित अनुक्रमणिका नहीं है, इसलिए आपको आमतौर पर अपने लेखन के दौरान खुद को पढ़ने के लिए आवश्यक अपनी अनुक्रमणिका/संबंधों को स्थापित करने की आवश्यकता होगी। मूल रूप से आपको अपनी सभी क्वेरी आवश्यकताओं के बारे में पहले से सोचने की ज़रूरत है और सुनिश्चित करें कि आपने लिखने के समय आवश्यक संबंध स्थापित किए हैं। उपरोक्त RedisStackOverflow स्रोत कोड एक अच्छा उदाहरण है जो इसे दिखाता है।

नोट:ServiceStack.Redis C# प्रदाता मानता है कि आपके पास Id नामक एक अद्वितीय फ़ील्ड है यही इसकी प्राथमिक कुंजी है। आप इसे ModelConfig.Id() . के साथ किसी भिन्न फ़ील्ड का उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं कॉन्फिग मैपिंग।

रेडिस पर्सिस्टेंस

2) रेडिस आउट-ऑफ़-द-बॉक्स आरडीबी और एपेंड ओनली फाइल (एओएफ) 2 प्रकार के दृढ़ता मोड का समर्थन करता है। RDB नियमित स्नैपशॉट लिखता है, जबकि केवल संलग्न फ़ाइल एक लेन-देन जर्नल की तरह कार्य करती है जो स्नैपशॉट के बीच में सभी परिवर्तनों को रिकॉर्ड करती है - मैं अनुशंसा करता हूं कि जब तक आप प्रत्येक के साथ सहज न हों और आपके एप्लिकेशन को क्या चाहिए। आप सभी रेडिस हठ को http://redis.io/topics/persistence पर पढ़ सकते हैं।

नोट रेडिस तुच्छ प्रतिकृति का भी समर्थन करता है जिसके बारे में आप अधिक पढ़ सकते हैं:http://redis.io/topics/replication

Redis को RAM पसंद है

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

Redis Admin UI के साथ अपने डेटा को विज़ुअलाइज़ करना

अंत में यदि आप सर्विसस्टैक सी # रेडिस क्लाइंट का उपयोग कर रहे हैं तो मैं रेडिस एडमिन यूआई स्थापित करने की अनुशंसा करता हूं जो आपकी इकाइयों का एक अच्छा दृश्य दृश्य प्रदान करता है। आप इसका लाइव डेमो यहां देख सकते हैं:http://servicestack.net/RedisAdminUI/AjaxClient/




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. रेडिस पब/सब और रेडिस स्ट्रीम के बीच मुख्य अंतर क्या हैं?

  2. मेरे डोमेन में उठाए गए ईवेंट से RedMQ में हैंडलर कैसे सेट करें?

  3. Node.js - सत्र res.redirect () के माध्यम से जारी नहीं रहता है

  4. NodeJS - बाहरी रेडिस सर्वर से सुरक्षित रूप से कनेक्ट करें

  5. जेडिस का उपयोग करके रेडिस से कनेक्ट नहीं हो सकता