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