2012-01-16 12 views
8

काम पर हमारे डेटा सेट के साथ हर समय जो कुछ आता है उसे चाबियों की एक श्रृंखला के मूल्यों के समूह के लिए पूछताछ करने की आवश्यकता होती है। तिथि सीमाएं एक स्पष्ट उदाहरण हैं।रेडिस के साथ चाबियों की एक श्रृंखला प्राप्त करें?

मैं तुम्हें यूनिक्स टाइमस्टैम्प और एक क्रमबद्ध सेट तिथि सीमाओं से क्वेरी करने के लिए उपयोग कर सकते हैं पता है, लेकिन यह कष्टप्रद लगता है, क्योंकि मैं करने के लिए या तो

  1. क्रमबद्ध सेट में मूल्य के रूप में पूरे दस्तावेज़ डाल होगा , या
  2. बस इसमें आईडी डालें, फिर प्रत्येक कुंजी के लिए रेडिस से पूछें।

शायद विकल्प 2 मानक है? एक बार में कई चाबियों के लिए रेडिस पूछने का कोई तरीका है? पूछताछ में mongodb $ की तरह? या शायद एक पाइपलाइन में चाबियों का एक गुच्छा मांगना उतना तेज़ है?

+0

विकल्प 2 मानक है से डेटा। एकाधिक कुंजी के लिए एक एमजीईटी है। http://redis.io/topics/twitter-clone –

उत्तर

6

विकल्प 2, आईडी को सॉर्ट किए गए सेट में डालें, फिर अपनी चाबियाँ हैं, तो मान प्राप्त करने के लिए भूलभुलैया का उपयोग करें, तो आपको कई हेट्ज जारी करने की आवश्यकता है, लेकिन लाभ यह है कि आप उस वस्तु के विशिष्ट हिस्सों को खींच सकते हैं जो आप वास्तव में करते हैं सब कुछ के बजाय की जरूरत है। यह अभ्यास में बहुत तेज है।

+0

दिलचस्प। मुझे लगता है कि आप भी पाइपलाइन का उपयोग करना चाहते हैं? यह संभव है कि मैं इस तरह 100 मूल्यों को नियमित रूप से खींचाना चाहता हूं। ऐसा लगता है जैसे एसओआरटी के साथ भी यह संभव है, है ना? क्या यह धीमा है? –

+1

आप जिस भाषा/लाइब्रेरी का उपयोग कर रहे हैं उसके आधार पर आमतौर पर बनाया जाता है, उदाहरण के लिए node.js node_redis आपके लिए कोई अतिरिक्त प्रयास नहीं करेगा। आप इस प्रकार की चाल का भी उपयोग कर सकते हैं लेकिन मुझे यकीन नहीं है कि यह किसी भी मापनीय तरीके से वास्तव में तेज़ है या नहीं। इसके लिए कुछ बेंचमार्क देखना पसंद करेंगे। –

+0

आपको पाइपलाइनिंग का उपयोग करना चाहिए, मैंने इसका प्रदर्शन माप लिया है और यह 10k चाबियों के साथ लगभग 5 गुना तेजी से काम कर रहा है, मेरे ब्लॉग http://blog.jmoz.co.uk/python-redis-py-pipeline – jmoz

1

शायद कुछ बाश जादू मदद करता है?

echo 'keys YOURKEY*' | redis-cli | sed 's/^/get /' | redis-cli 

हो जाएगा ताकि उत्पादन सभी कुंजियों जो YOURKEY के साथ शुरू

+4

** महत्वपूर्ण नोट: ** 'KEYS' कमांड अवरुद्ध हो रहा है और यदि आपके पास बहुत अधिक डेटा है तो इसमें काफी समय लग सकता है। आप इस तरह से सर्वर/अनुप्रयोगों को नीचे ले जा सकते हैं। – ceejayoz

संबंधित मुद्दे