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

क्या मुझे जेडब्ल्यूटी टोकन को रेडिस में स्टोर करना चाहिए?

TLDR:यदि आप चाहते हैं कि किसी बिंदु पर टोकन को निरस्त करने की क्षमता हो, तो हाँ, इसे Redis जैसी किसी चीज़ में तेज़ी से संग्रहीत करें।

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

जैसा कि टिप्पणियों में सुझाया गया है, सूची को एक ब्लैकलिस्ट (यानी अमान्य टोकन की सूची) बनाने के लिए एक अच्छा तरीका है। प्रत्येक अनुरोध पर आप यह सुनिश्चित करने के लिए सूची देखते हैं कि इसमें टोकन मौजूद नहीं है। आप टोकन को स्टोर करने के लिए संभाव्य एल्गोरिथम का उपयोग करके लुकअप चरण के दौरान मेमोरी स्पेस और प्रदर्शन में और सुधार कर सकते हैं। स्तरित लुकअप करना एक आसान तरीका है। उदाहरण के लिए, आपके पास एक छोटा इन-ऐप स्टोर हो सकता है जो आपके ब्लैकलिस्ट किए गए टोकन के केवल पहले कुछ (जैसे 1 से 4) बाइट्स को ट्रैक करता है। फिर रेडिस कैश उसी टोकन के थोड़ा और पूर्ण संस्करण को ट्रैक करेगा (उदाहरण के लिए पहले 2 से 8 बाइट्स)। फिर आप अधिक स्थायी समाधान (फाइल सिस्टम, rdbms, आदि) का उपयोग करके काली सूची में डाले गए टोकन के पूर्ण संस्करण को संग्रहीत कर सकते हैं। यह एक आशावादी लुकअप रणनीति है जो जल्दी से पुष्टि करेगी कि ब्लैकलिस्ट से एक टोकन अनुपस्थित है (जो कि अधिक सामान्य मामला होगा)। यदि कोई टोकन देखा जा रहा है तो इन-ऐप ब्लैकलिस्ट में किसी आइटम से मेल खाता है (क्योंकि इसके पहले कुछ बाइट्स मेल खाते हैं), फिर रेडिस स्टोर पर एक अतिरिक्त लुकअप पर जाएं, फिर जरूरत पड़ने पर लगातार स्टोर करें। कुछ (या सभी) स्टोर को कोशिश या हैश टेबल के रूप में लागू किया जा सकता है। डेटा संरचना को लागू करने के लिए एक और कुशल और अपेक्षाकृत सरल विचार करने के लिए ब्लूम फ़िल्टर कहा जाता है।

जाहिर है, यदि आप नियमित रूप से लाखों लंबे समय तक चलने वाले टोकन को ब्लैकलिस्ट करते हैं, तो आपको उपरोक्त दृष्टिकोण को अपनाना होगा (जो यह भी संकेत दे सकता है कि आपको एक अलग समस्या है)।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. शुरुआती के लिए MongoDB ट्यूटोरियल (पूरी गाइड) - 15 मिनट में MongoDB सीखें

  2. एक-एक और एक-अनेक संदर्भों को हटाना - नेवला

  3. नेवला - ObjectId की एक सरणी पर पॉप्युलेट का उपयोग करना

  4. मैं एक नेवला मॉडल में विधियों को कैसे परिभाषित करूं?

  5. MongoDb उल्का द्वारा कैसे स्थापित किया जाता है?