किसी Redis में किसी भी प्रकार की छाया हुआ डेटा संरचना को लागू किया गया है? मैं एक समाचार फ़ीड की तरह कुछ बनाने पर काम कर रहा हूँ। फ़ीड को घुमाया जाएगा और बहुत बार से पढ़ा जाएगा, और इसे रेडिस में एक क्रमबद्ध सेट में पकड़ा जाएगा मेरे उपयोग के मामले के लिए सस्ता और सही होगा। एकमात्र मुद्दा यह है कि मुझे केवल प्रति फ़ीड एन आइटम की आवश्यकता है, और मैं मेमोरी ओवरफ्लो के बारे में चिंतित हूं, इसलिए मैं यह सुनिश्चित करना चाहता हूं कि प्रत्येक फ़ीड एन आइटम से ऊपर न हो।रेडिस कैप्ड सेट, सूची, या कतार?
redis-cli EVAL "$(cat update_feed.lua)" 1 feeds:some_feed "thing_to_add", n
कहाँ update_feed.lua (परीक्षण) के बिना तरह दिखता है:: यह लुआ साथ Redis में एक छाया हुआ क्रमबद्ध संग्रह करने के लिए बहुत तुच्छ लगती
redis.call('ZADD', KEYS[1], os.time(), ARGV[1])
local num = redis.call('ZCARD', KEYS[1])
if num > ARGV[2]:
redis.call('ZREMRANGEBYRANK', KEYS[1], -n, -inf)
कि बिल्कुल बुरा नहीं है, और सुंदर सस्ता है, लेकिन ऐसा लगता है कि इस तरह की एक मूल चीज है जो सॉर्ट किए गए सेट को तुरंत शुरू करने के साथ ही अधिक बाल्टी के साथ शुरू करने के लिए और अधिक सस्ता हो सकती है। मैं redis में है, इसलिए मुझे लगता है कि है कि मेरे सवाल यह है कि क्या करने के लिए एक तरह से नहीं मिल सकता है: मैं कुछ याद आती है, और अगर मैं ऐसा नहीं किया, क्यों redis में इसके लिए कोई संरचना है, भले ही यह सिर्फ बुनियादी लुआ दौड़ा किया स्क्रिप्ट मैंने वर्णित किया है, ऐसा लगता है कि यह एक सामान्य पर्याप्त उपयोग-मामला होगा कि इसे रेडिस डेटा संरचनाओं के विकल्प के रूप में कार्यान्वित किया जाना चाहिए?
आइटम जोड़ना और लुआ स्क्रिप्ट या बहु/EXEC ब्लॉकों का उपयोग कर डेटा संरचना ट्रिमिंग तुम क्या करने की अपेक्षा की जाती है। इसे स्वचालित रूप से करने के लिए कोई विशिष्ट विकल्प नहीं है। –
@DidierSpezia क्या आप इसे एक उत्तर के रूप में जोड़ सकते हैं, इसलिए मैं इसे स्वीकार कर सकता हूं? – Eli
आपको gkamal के उत्तर को स्वीकार करना चाहिए यह मेरे लिए ठीक लग रहा है। –