Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

रेडिस कैश में डेटा के पदानुक्रम (पेड़) के कुछ हिस्सों को अमान्य कैसे करें

ऐसा करने के लिए कम से कम 3 अलग-अलग तरीके हैं, प्रत्येक के अपने फायदे और नुकसान हैं।

पहला तरीका पेड़ के दूसरे स्तर (अनुकूलन का पहला सेट) को पहचानने और अमान्य (हटाने) के लिए पेड़ की गैर-परमाणु तदर्थ स्कैनिंग का उपयोग करना है। ऐसा करने के लिए, अपने हैश के क्षेत्रों के लिए एक पदानुक्रमित नामकरण योजना का उपयोग करें और HSCAN का उपयोग करके उनके माध्यम से पुनरावृति करें . उदाहरण के लिए, यह मानते हुए कि आपके हैश का कुंजी नाम उत्पाद की आईडी है (उदाहरण के लिए उत्पादए), आप पहले अनुकूलन के पहले संस्करण के लिए फ़ील्ड नाम के रूप में '0001:0001' जैसे कुछ का उपयोग करेंगे, इसके दूसरे संस्करण के लिए '0001:0002' और इसके आगे। इसी तरह, '0002:0001' दूसरा अनुकूलन पहला संस्करण होगा, आदि... फिर, अनुकूलन 42 के सभी संस्करण खोजें, HSCAN ProductA 0 MATCH 0042:* का उपयोग करें। , HDEL उत्तर में फ़ील्ड, और कर्सर शून्य होने तक दोहराएं।

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

HSET ProductA 0001:0001 "<customization 1 version 1 JSON payload"
SADD ProductA:0001 0001

ध्यान दें कि ये दोनों ऑपरेशन एक ही लेन-देन में होने चाहिए (अर्थात MULTI\EXEC का उपयोग करें) ब्लॉक करें या EVAL एक लुआ लिपि)। जब आपके पास यह सेट अप होता है, तो अनुकूलन को अमान्य करना केवल SMEMBERS . को कॉल करने का मामला है प्रासंगिक सेट पर और इसमें हैश (और स्वयं सेट भी) से संस्करणों को हटा रहा है। हालांकि, यह नोट करना महत्वपूर्ण है कि एक बड़े सेट से सभी सदस्यों को पढ़ने में समय लग सकता है - 1K सदस्य उतना बुरा नहीं है, लेकिन बड़े सेट के लिए SSCAN है। ।

अंत में, आप हैश के बजाय सॉर्ट किए गए सेट का उपयोग करने पर विचार कर सकते हैं। हालांकि इस उपयोग के मामले में शायद कम सहज ज्ञान युक्त, सॉर्ट किया गया सेट आपको आवश्यक सभी संचालन करने देगा। हालांकि, इसका उपयोग करने की कीमत हैश के ओ (1) की तुलना में जोड़ने/निकालने/पढ़ने के लिए ओ (लॉगएन) की बढ़ी हुई जटिलता है, लेकिन संख्याओं को देखते हुए अंतर महत्वपूर्ण नहीं है।

सॉर्ट किए गए सेट की शक्ति को मुक्त करने के लिए, आप लेक्सिकोग्राफ़िकल ऑर्डरिंग का उपयोग करेंगे ताकि सॉर्ट किए गए सेट के सभी सदस्यों का स्कोर समान हो (उदा. 0 का उपयोग करें)। प्रत्येक उत्पाद को हैश की तरह ही एक क्रमबद्ध सेट द्वारा दर्शाया जाएगा। सेट के सदस्य हैश के क्षेत्र के समकक्ष हैं, अर्थात् अनुकूलन के संस्करण। "चाल" सदस्यों का निर्माण इस तरह से कर रही है जिससे आप श्रेणी खोज (या स्तर -2 अमान्यता यदि आप करेंगे) करने की अनुमति देते हैं। यहां एक उदाहरण दिया गया है कि यह कैसा दिखना चाहिए (ध्यान दें कि यहां कुंजी उत्पाद ए हैश नहीं बल्कि एक क्रमबद्ध सेट है):

ZADD ProductA 0 0001:0001:<JSON>

अनुकूलन संस्करण पढ़ने के लिए, ZRANGEBYLEX ProductA [0001:0001: [0001:0001:\xff का उपयोग करें और JSON को उत्तर से विभाजित करें और संपूर्ण अनुकूलन को निकालने के लिए, ZREMRANGEBYLEX का उपयोग करें ।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. जावा क्लाइंट के साथ की-वैल्यू डेटाबेस

  2. एचजीईटी ब्लॉक नोडज रेडिस के अंदर एचडीएल

  3. रेडिस - बड़े मानचित्र को संग्रहीत करने का सबसे अच्छा तरीका (शब्दकोश)

  4. रेडिस में आप अधिकतम मूल्य आकार क्या स्टोर कर सकते हैं?

  5. ट्रैविस सीआई पर रेडिस चलाना