आप रेडिस में अंतिम स्कीमा कैसे कार्यान्वित करते हैं? क्या यह संभव है?
रेडिस स्कीमा-रहित है . आइए कॉल करें कि आपको क्या चाहिए डेटा संग्रहण दृष्टिकोण ।
एक संभावित तरीका HSET
. का उपयोग कर रहा है या HMSET
इन JSON ऑब्जेक्ट्स को आईडी से जोड़ने के लिए, जहां उनकी आईडी कुंजी . है और JSON टेक्स्ट मान है . हम इस हैश को users:byid
. कहेंगे ।
यह समस्या का पहला भाग है। अब आप वस्तुओं को आईडी द्वारा प्राप्त कर सकते हैं ।
अब अगला मुद्दा यह है कि आप वस्तुओं को उस श्रेणी में पुनः प्राप्त करना चाहते हैं जिसे आप रैंकिंग . कहते हैं . इसे प्राप्त करने के लिए, आपको ZADD
. का उपयोग करके अपनी वस्तुओं को एक क्रमबद्ध सेट में संग्रहीत करने की आवश्यकता है . क्रमबद्ध सेट क्रमबद्ध हैं स्कोर के आधार पर, और आइटम स्कोर के साथ स्टोर किए जाते हैं . यह आपके उपयोग के मामले के लिए एकदम सही लगता है!
असल में आप ऑब्जेक्ट आईडी को पूरे सॉर्ट किए गए सेट में स्टोर करने जा रहे हैं:
zadd users:byranking 10 1 5 2
... जहां 10
स्कोर है (अर्थात आपका वास्तविक रैंकिंग मान) और 1 id और इसी तरह।
तो, आप रैंकिंग के आधार पर आइटम कैसे फ़िल्टर करते हैं? ZRANGEBYSCORE
. का उपयोग करना :
- 10 को छोड़कर, 0 और 10 के बीच रैंकिंग करके।
zrangebyscore users:byranking 0 (10
- 10 सहित 0 और 10 के बीच रैंकिंग करके।
zrangebyscore users:byranking 0 10
तथाकथित ZRANGEBYSCORE
आपको पुनर्प्राप्त उपयोगकर्ताओं की आईडी देगा। आप उनका JSON टेक्स्ट कैसे प्राप्त करते हैं? HMGET
Using का उपयोग करना :
HMGET users:byid 1 2
...जो दोनों उपयोगकर्ता को id . के साथ मिलेगा 1
और 2
, अगर 10
रैंकिंग समावेशी है।