रेडिस: किसी सरणी या सॉर्ट किए गए सेट में किसी तत्व को समाप्त करना संभव है?


124

क्या वर्तमान में संपूर्ण कुंजी / मान युग्म को समाप्त करना संभव है? क्या होगा यदि मैं एक सूची प्रकार संरचना में मूल्यों को जोड़ना चाहता हूं और प्रविष्टि के 1 घंटे बाद उन्हें ऑटो हटा दिया जाए। क्या यह वर्तमान में संभव है, या मैन्युअल रूप से पर्सिंग करने के लिए क्रोन जॉब चलाने की आवश्यकता होगी?

जवाबों:


76

क्या वर्तमान में संपूर्ण कुंजी / मान युग्म को समाप्त करना संभव है?

जहाँ तक मुझे पता है, और समाप्ति के बारे में प्रमुख आदेशों और दस्तावेज़ों के अनुसार , वर्तमान में आप समाप्ति को केवल विशिष्ट कुंजी पर सेट कर सकते हैं और अंतर्निहित डेटा संरचना के लिए नहीं। हालाँकि उल्लिखित वैकल्पिक समाधानों के साथ इस कार्यक्षमता के बारे में Google समूहों में चर्चा है


1
अब जुलाई 2016 तक के किसी भी विचार का उन्होंने वहाँ नए संस्करण में समर्थन किया है?
कामरान शाहिद

1
@KamranShahid को इस पर कुछ मिला ??
प्रकाश कुमार

1
नप प्रकाश अभी तक नहीं।
कामरान शहीद

3
क्या यह उत्तर 8 साल बाद भी प्रासंगिक है?
सिमो

2
हां, नेस्टेड डेटा संरचनाओं में तत्व की समाप्ति रेडिस द्वारा समर्थित नहीं है।
इटमार हैबर

94

एक सामान्य पैटर्न है जो इस समस्या को काफी अच्छी तरह से हल करता है।

सॉर्ट किए गए सेट का उपयोग करें, और स्कोर के रूप में टाइमस्टैम्प का उपयोग करें। यह तब स्कोर रेंज द्वारा आइटम को हटाने के लिए तुच्छ है, जो कि समय-समय पर या केवल प्रत्येक लेखन पर, केवल रेंज की सीमा को पढ़कर, श्रेणी के तत्वों से बाहर की अनदेखी पढ़ता है।

यहाँ और अधिक: https://groups.google.com/forum/# ​​.topic / redis-db / rXXMCLNkNS


7
अच्छा समाधान है, लेकिन मुझे लगता है कि redis ने ठीक से इसका समर्थन किया है। यह एक सामान्य आवश्यकता है और इसके लिए जटिल वर्कआर्ड की आवश्यकता नहीं होनी चाहिए।
UpTheCreek

14
मुझे नहीं पता, मुझे बहुत खुशी है कि वे अपनी बंदूकों से चिपके रहते हैं - फीचर सेट का विस्तार उन तरीकों से करते हैं जो वे नहीं चाहते हैं या योजना नहीं बनाते हैं, डिजाइन बलिदान करना। सही समाधान की तरह शीर्ष ध्वनियों पर अतिरिक्त कार्यक्षमता का निर्माण, और रेडिस को छोड़ देता है कि वह क्या करता है, उत्कृष्ट रूप से
किरेन जॉनस्टोन

रेडिस एकदम सही है - सरल, स्वच्छ डिजाइन और पूर्वानुमान योग्य व्यवहार जिसके परिणामस्वरूप उत्कृष्ट
पूर्वसर्गता

1
अद्भुत समाधान, हम एक साधारण फेनो सूची का उपयोग करने में भी सक्षम थे जहां हमने एक सूची रखी और पहले 5 तत्वों को लिया, और जब स्केलेबिलिटी के आधार पर सूची 5 + एन से बड़ी हो गई, तो हम कुंजी को हटाते हैं और शुरू करते हैं। सरल, आसान और बिल्कुल रेडिस एल्गोरिदम कैसा होना चाहिए। यह एल्गोरिथ्म हमारे रिपोर्टिंग सिस्टम को सूची की क्वेरी करने और यह देखने के लिए बहुत समय देता है कि उपयोगकर्ता किन उपकरणों से लॉगिन करते हैं। @KierenJohnstone से सहमत, रेडिस को इसके चारों ओर वास्तुकला बनाने के लिए डिज़ाइन किया गया है और यह सही है कि यह कैसा है।
Ligemer

1

मैं इसे संभालने की एक अलग विधि पर आया, यह नहीं जानता कि क्या यह आप में से किसी के लिए उपयोगी है, लेकिन यहाँ जाता है:

हैश और सॉर्ट किए गए सेट को एक गाइड द्वारा लिंक किया गया है।

  1. मेरे पास एक हैश है जो 'x' सेकंड में समाप्त होने के लिए सेट है
  2. मेरे पास एक सॉर्ट किया गया सेट है जिसका उपयोग राउंडेड क्वेरी के लिए किया जाता है
  3. किसी लेनदेन में दोनों का डेटा जोड़ा जाता है, इसलिए यदि कोई विफल हो जाता है, तो वे दोनों विफल हो जाते हैं।
  4. एक राउंड किए गए क्वेरी पर, 'EXISTS' का उपयोग करके देखें कि क्या हैशेड वैल्यू मौजूद है क्योंकि परिणाम इससे अधिक हैं
  5. यदि यह मौजूद नहीं है, तो इसकी समय सीमा समाप्त हो गई है, इसलिए आइटम को सॉर्ट किए गए सेट से हटा दें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.