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

क्या Stackexchange.Redis की आग और गारंटी वितरण को भूल जाता है?

दरअसल, रेडिस प्रोटोकॉल वास्तव में "फायर एंड फॉरगेट" ऑपरेशन का समर्थन नहीं करता है। पब/उप ट्रैफ़िक को छोड़कर, सभी रेडिस कमांड एक उत्तर के साथ मेल खाते हैं, और रेडिस सर्वर को उत्तर को छोड़ने के लिए कहने का कोई तरीका नहीं है।

अब कुछ क्लाइंट (जैसे StackExchange.Redis) प्रोटोकॉल के एसिंक्रोनस कार्यान्वयन के माध्यम से "फायर एंड फॉरगेट" मोड का अनुकरण करते हैं। दरअसल, स्टैक एक्सचेंज में "फायर एंड फॉरगेट" मोड। रेडिस "एसिंक्रोनस" मोड के समान है, सिवाय इसके कि जब उत्तर प्राप्त होते हैं तो उन्हें छोड़ दिया जाता है।

क्या यह विश्वसनीय है? ठीक है, यह डिलीवरी की गारंटी देता है जहां तक ​​​​टीसीपी/आईपी डिलीवरी की गारंटी देता है। नेटवर्क पैकेटों को संचारित करने के लिए बहुत प्रयास करेगा (आखिरकार यदि उनमें से कुछ खो गए हैं तो पैकेट फिर से प्रेषित किए जाएंगे), लेकिन यह सब टीसीपी द्वारा नियंत्रित किया जाता है।

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

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




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. रेल रेडिस मैक्समेमोरी और मैक्समेमोरी-पॉलिसी सेट करता है

  2. रेडिस डीबी में सभी कुंजियों और मूल्यों को पुनरावृत्त करने का तेज़ तरीका

  3. रेडिस कुबेरनेट्स क्लस्टर में NodeJS में ECONNREFUSED को जोड़ता है

  4. रेडिस क्लस्टर में पैटर्न से मेल खाने वाली चाबियों को कैसे हटाएं

  5. जावास्क्रिप्ट डिज़ाइन पैटर्न -- अवांछित अतुल्यकालिकता से निपटना