इन डेटा को रेडिस के साथ मॉडल करना निश्चित रूप से संभव है, लेकिन आपको डेटा संरचनाओं और एक्सेस पथों के संदर्भ में सोचने की आवश्यकता है। रेडिस के साथ एक्सेस पथों को अंतर्निहित रूप से प्रबंधित नहीं किया जाता है (जैसे आरडीबीएमएस/मोंगोडीबी में इंडेक्स के साथ)।
दिए गए उदाहरण के लिए, आपके पास हो सकता है:
user:<user hash> -> hash of user properties
user:<user hash>:sent -> set of <msg hash>
user:<user hash>:received -> set of <msg hash>
message:<msg hash> -> hash of message properties
किसी संदेश को जोड़ने/हटाने का अर्थ है प्रेषकों और प्राप्तकर्ताओं के अनुरूप *:भेजे गए और *:प्राप्त सेटों को बनाए रखना, संदेश ऑब्जेक्ट को जोड़ने/हटाने के शीर्ष पर।
किसी दिए गए उपयोगकर्ता के लिए भेजे गए या प्राप्त संदेशों को पुनर्प्राप्त करना केवल एक SMEMBERS आदेश है, या यदि आप उसी समय संदेश के गुणों को भी पुनर्प्राप्त करना चाहते हैं तो एक सॉर्ट करें:
# Get a list of message hash codes only in one roundtrip
smembers user:<user hash>:received
# Get a list of message contents in one roundtrip
sort user:<user hash>:received by nosort get message:*->sender get message:*->message
सॉर्ट का उपयोग करने के औचित्य के लिए, देखें:
- Redis से कई प्रमुख मान प्राप्त करना
- Redis/NoSQL में अवधारणा बनाने में मदद चाहिए
नोट 1: रेडिस के साथ यूयूआईडी या हैश कोड (विशेषकर सेट में) के बजाय कुंजी के रूप में पूर्णांकों का उपयोग करना बेहतर होता है, क्योंकि वे अधिक कुशल तरीके से संग्रहीत होते हैं।
नोट 2: यदि आपको संदेशों को ऑर्डर करने की आवश्यकता है, तो सेट के बजाय सूचियों का उपयोग किया जाना चाहिए। नतीजा यह है कि केवल सबसे पुराने संदेशों को हटाया जा सकता है, और केवल न्यूज़सेट संदेशों को एक कुशल तरीके से जोड़ा जा सकता है। आप शायद सभी संदेशों के लिए एक वैश्विक सूची भी जोड़ेंगे।