मैं Django के साथ रेडिस का उपयोग कैसे कर सकता हूं?


95

मैंने रेडिस-कैश के बारे में सुना है लेकिन यह वास्तव में कैसे काम करता है? यह django और मेरे rdbms के बीच एक परत के रूप में उपयोग किया जाता है, rdbms प्रश्नों को किसी तरह कैशिंग करके?

या इसे सीधे डेटाबेस के रूप में उपयोग किया जाना चाहिए? जो मुझे संदेह है, क्योंकि उस github पृष्ठ में कोई लॉगिन विवरण, कोई सेटअप शामिल नहीं है .. बस आपको कुछ कॉन्फ़िगर संपत्ति सेट करने के लिए कहता है।

जवाबों:


72

रेडिस के इस पायथन मॉड्यूल का रीडमी में स्पष्ट उपयोग उदाहरण है: http://github.com/andymccurdy/nis-py

Redis को RAM कैश के लिए डिज़ाइन किया गया है। यह मूल GET और SET ऑफ़ कीज़ के साथ-साथ शब्दकोशों जैसे संग्रह का समर्थन करता है। आप रेडिस में उनके आउटपुट को संग्रहीत करके RDBMS प्रश्नों को कैश कर सकते हैं। लक्ष्य अपने Django साइट को गति देना होगा। रेडिस या किसी अन्य कैश का उपयोग तब तक शुरू न करें जब तक आपको गति की आवश्यकता न हो - समय से पहले अनुकूलन न करें।


लेकिन आप कैसे जांचते हैं कि रेडिस पर कैश को अपडेट करने की आवश्यकता है? क्या आप रिकॉर्ड संख्या की तुलना करते हैं या बेहतर तरीका है?
मारकोनी

7
यह आमतौर पर कुंजी के लिए एक TTL सेट करके किया जाता है: redis.io/commands/ttl । यदि कुंजी समाप्त हो जाती है, तो आपको डीबी पर जाना होगा। इसलिए अगर चाबी रेडिस में है, तो आप इसका उपयोग करें। ध्यान दें कि इसका सरल कार्यान्वयन कुछ समस्याओं का कारण बनता है: जब कोई लोकप्रिय कुंजी समाप्त हो जाती है तो आपके पास en.wikipedia.org/wiki/Thundering_herd_problem होता है , आप en.wikipedia.org/wiki/Niveative_cache का उपयोग करना चाहते हैं , और आपके DB को en.wikipedia की
स्पाइक ग्रोनिम

4
उम्म, ठीक है, ए) रेडिस रैम कैश से अधिक होने के लिए डिज़ाइन किया गया है - यह लगातार (लेकिन इसमें कैश के लिए विशेषताएं शामिल हैं), बी) यह साधारण कुंजी-मूल्य भंडारण से अधिक है - इसमें अंतर्निहित हेरफेर के साथ सूची, हैशटैट्स आदि हैं।
ओली

8
ईमानदारी से कैशिंग मॉडल / प्रतिक्रिया ऑब्जेक्ट समयपूर्व अनुकूलन के अंतर्गत नहीं आते हैं। जब तक आपसे ऐसा करने के लिए शुल्क नहीं लिया जाता (जैसे कि हरोकू पर) यह छोटे ऐप के लिए भी कैश को नुकसान नहीं पहुंचाता है।
विक्की

1
यह गति के बारे में नहीं है, यह संसाधनों के बारे में है। कैश में एक टेबल कम खर्चीली होगी।
dman

60

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

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

वैसे भी, बिंदु बना हुआ है, हाँ, Redis को डेटाबेस के रूप में उपयोग किया जा सकता है।


3
मेरी कंपनी के लिए, हम कैसंड्रा और पोस्टग्रेज से उत्पन्न संक्षेपण और उत्पादों को संग्रहीत करने के लिए रेडिस का उपयोग करते हैं। इन उत्पादों की मात्रा (कई अरब), उन्हें कितनी बार बदलने की आवश्यकता है, और हमें कभी भी यह नहीं पता है कि किसी भी क्षण की आवश्यकता क्या है, यह उन्हें रेडिस के लिए एकदम फिट बनाता है। इसके अलावा, एक बार जब आप SQL db में किसी भी चीज की एक लाख पंक्तियों से ऊपर जाते हैं, तो रेडिस सदस्यता परीक्षण के लिए एक महान मानार्थ संसाधन हो सकता है (जैसे कि इस डोमेन में ये एंटिटी हैं?)
डेविड

यह सोचकर मदद नहीं कर सकता कि मेरा जवाब जिसने कई महीने पहले ठीक उसी बिंदु को बनाया था, आपके द्वारा लीप लिया गया था ... ओह ठीक है।
अक्टूबर १ga

22

रेडिस मूल रूप से घंटी और सीटी के भार के साथ केवी स्टोर में एक 'मेमोरी' है। यह बेहद लचीला है। आप इसे अस्थायी स्टोर के रूप में उपयोग कर सकते हैं, जैसे कैश या स्थायी स्टोर, डेटाबेस की तरह (अन्य उत्तरों में उल्लिखित केविट के साथ)।

जब Django के साथ Redis के लिए सबसे अच्छा / सबसे आम उपयोग मामला संयुक्त रूप से 'प्रतिक्रियाओं' और सत्रों को कैश करना है।

यहाँ एक बैकएंड है https://github.com/sebleier/django-redis-cache/ और यहाँ पर Django डॉक्स में उत्कृष्ट प्रलेखन: https://docs.djangoproject.com/en/1.3/topics/cache/

मैंने हाल ही में अपने कैश की निगरानी के लिए https://github.com/erussell/django-redis-status का उपयोग शुरू किया है - एक आकर्षण का काम करता है। (रेडिस पर मैक्सिमम को कॉन्फ़िगर करें या परिणाम बहुत उपयोगी नहीं हैं)।


5

आप अपने Django ऐप में वितरित कार्यों के लिए एक पंक्ति के रूप में रेडिस का उपयोग कर सकते हैं। आप इसे सेलेरी या पायथन आरक्यू के लिए एक संदेश दलाल के रूप में उपयोग कर सकते हैं ।


2

प्राथमिक डेटाबेस के रूप में रेडिस

हां आप प्राथमिक डेटाबेस के रूप में Redis कुंजी-मूल्य स्टोर का उपयोग कर सकते हैं। Redis न केवल की-वैल्यू पेयर को स्टोर करता है बल्कि यह विभिन्न डेटा स्ट्रक्चर्स को भी सपोर्ट करता है

  1. सूची
  2. सेट
  3. क्रमबद्ध सेट
  4. हैश
  5. बिटमैप
  6. Hyperloglogs

रेडिस डेटा प्रकार आधिकारिक डॉक्टर

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

रेडिस डेटा चेक आधिकारिक डॉक्टर को भी जारी रख सकता है।

Redis Persistence आधिकारिक डॉक


कैश के रूप में रेडिस

हाँ Redis Django और RDBMS के बीच में रहते हैं।

यह काम किस प्रकार करता है

given a URL, try finding that page in the cache if the page is in the cache: return the cached page else: generate the page save the generated page in the cache (for next time) return the generated page

Django के कैश फ्रेमवर्क आधिकारिक डॉक्टर


Redango को Django के साथ कैसे उपयोग कर सकते हैं

हम Django आवेदन के लिए redis python क्लाइंट redis-py का उपयोग कर सकते हैं ।

Redis python ग्राहक redis-py Github

हम Django-redis का उपयोग django cache backend के लिए कर सकते हैं ।

Django-redis redis-py पर बनाता है और django एप्लिकेशन से संबंधित अतिरिक्त सुविधाओं को जोड़ता है

Django-redis doc Github

अन्य पुस्तकालय भी मौजूद हैं।


रेडिस मामलों और डेटा प्रकारों का उपयोग करते हैं

कुछ मामलों का उपयोग करते हैं

  • सत्र कैश
  • वास्तविक समय विश्लेषण
  • वेब कैशिंग
  • लीडरबोर्ड

शीर्ष रेडिस कोर डेटा संरचना प्रकारों द्वारा मामलों का उपयोग करें


रेडिस का उपयोग करने वाली बड़ी टेक कंपनियां

 Twitter GitHub Weibo Pinterest Snapchat Craigslist Digg StackOverflow Flickr 

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.