2011-12-23 8 views
35

क्या रेडिस में नामस्थान बनाना संभव है?रेडिस में नेमस्पेस?

जो मैंने पाया, उससे सभी वैश्विक आदेश (गिनती, सभी हटाएं) सभी वस्तुओं पर काम करते हैं। क्या उप-रिक्त स्थान बनाने का कोई तरीका है जैसे कि इन आदेशों को संदर्भ में सीमित किया जाएगा?

मैं इस उद्देश्य के लिए अलग-अलग Redis सर्वर सेट अप नहीं करना चाहता हूं।

मुझे लगता है कि जवाब "नहीं" है, और आश्चर्य है कि यह क्यों लागू नहीं किया गया था, क्योंकि यह बहुत अधिक ओवरहेड के बिना उपयोगी सुविधा प्रतीत होता है।

उत्तर

30

एक रेडिस सर्वर एकाधिक डेटाबेस को संभाल सकता है ... जो गिने गए हैं। मुझे लगता है कि यह डिफ़ॉल्ट रूप से उनमें से 32 प्रदान करता है; आप redis-CLI शेल पटकथा लेखन के आदेश करने के लिए और कनेक्शन बहस के लिए इसी तरह के विकल्प द्वारा -n विकल्प का उपयोग करने या उसके संबंध वस्तुओं पर "select()" पद्धति का उपयोग करके उन तक पहुँच सकते हैं। (इस मामले .select() में अजगर Redis मॉड्यूल के लिए विधि का नाम है ... मैं इसे इसी तरह से अन्य पुस्तकालयों और इंटरफेस के लिए नामित किया गया है अनुमान।

के लिए विन्यास फाइल में आप कितने अलग डेटाबेस नियंत्रित करने के लिए एक विकल्प नहीं है रेडिस सर्वर डिमन भी। मुझे नहीं पता कि ऊपरी सीमा क्या होगी और गतिशील रूप से इसे बदलने का कोई तरीका प्रतीत नहीं होता है (दूसरे शब्दों में ऐसा लगता है कि आपको सर्वर को बंद करना और पुनरारंभ करना होगा अतिरिक्त डीबी जोड़ें)। साथ ही, इन डीबी संख्याओं को किसी भी प्रकार के नाम से जोड़ने और न ही अलग एसीएलएस, और यहां तक ​​कि अलग-अलग पासवर्ड लगाने के लिए एक प्रतीत नहीं होता है। रेडिस, निश्चित रूप से, स्कीमा-कम है अच्छी तरह से

+0

एक नाम स्थान एक डेटाबेस नहीं है, डेटाबेस (15 0) संख्या से दर्शाया गया है। नामस्थान का उपयोग उपसर्ग – kalelc

+0

@kalelc जोड़ने के लिए किया जाता है: चूंकि रेडिस प्रलेखन में "नेमस्पेस" शब्द परिभाषित नहीं किया गया है, इसलिए मुझे नहीं लगता कि आपका शब्द यहां से अधिक कैननिकल है। मैं स्पष्ट कर रहा था कि दिए गए रेडिस सर्वर पर प्रत्येक "डेटाबेस" एक स्वतंत्र "नेमस्पेस" है (जो कि समान कुंजी टकरा नहीं जाएगा)। स्पष्ट रूप से आप मनमाने ढंग से उपसर्ग बना सकते हैं और उनको "नेमस्पेस" के रूप में व्यवहार कर सकते हैं --- लेकिन यह रेडिस में कोई विशेष रूप से समर्थित सुविधा नहीं है; यह सिर्फ इसका उपयोग करने के लिए एक सम्मेलन है। –

+0

स्पष्टीकरण के लिए जिम का धन्यवाद, कभी-कभी भ्रमित होता है जब हमें रेडिस के साथ रेल में नामस्थान मिला। – kalelc

0

यदि आप रूबी का उपयोग आप इन जवाहरात देख सकते हैं:
https://github.com/resque/redis-namespace
https://github.com/jodosha/redis-store

+0

मैं नहीं हूं, लेकिन मुझे समझ में नहीं आता कि वे तकनीकी रूप से कैसे काम कर सकते हैं। मैंने सोचा कि सर्वर एपीआई उनका समर्थन नहीं करता है। – ripper234

+5

रेडिस एक्सेस ऑब्जेक्ट/हैंडल के आस-पास ज्यादातर पारदर्शी रैपर प्रदान करने के ये तरीके हैं। इनका उपयोग करने से आप "नेमस्पेस" में किसी भी प्रकार के ऑब्जेक्ट के किसी भी संदर्भ के दौरान "नेमस्पेस" उपसर्ग के साथ अपने कोड में उपयोग किए जाने वाले किसी भी प्रमुख नाम को बस प्रस्तुत करते हैं। जैसा कि आपने अनुमान लगाया है कि सर्वर पक्ष पर इनमें से कोई अलगाव नहीं है, वे केवल सम्मेलन, शायद आंतरिक मानकों के रूप में मौजूद हैं। –

+1

यह आपको 'रेडिस-नेमस्पेस' लाइब्रेरी के शीर्ष पर बताता है, यह एक गरीब व्यक्ति का नामस्थान है, यह केवल "ns: *" के साथ सबकुछ उपसर्ग करेगा। –