/ / स्रोत सूची - रेडिस का उपयोग करके किसी आइटम की सूची को विश्वसनीय रूप से कैसे संसाधित करें

एक स्रोत सूची का उपयोग कर वस्तुओं की एक सूची को विश्वसनीय रूप से कैसे संसाधित करें - redis

कहें कि आपको समाचार पत्र भेजने की आवश्यकता है। आपके पास सूची या सेट (जो कुछ भी समझ में आता है) में संग्रहीत ईमेल की एक मास्टर सूची है।

List/Set
"user1@example.com"
"user2@example.com"

आपके पास एक ही सूची का उपयोग करके कई समाचार पत्र भेजे जा सकते हैं, इसलिए आप मूल मास्टर सूची को संशोधित नहीं कर सकते हैं।

छद्म कोड में मैं यह सोच रहा था:

  1. x तत्व प्राप्त करें, "in_progress_123" पर धकेलें
  2. जब उपभोक्ता प्रसंस्करण (सफलता या असफलता) पूरा कर लेते हैं, तो "पूर्ण_123" सूची में धकेल दें
  3. # 1 जारी रखें जब तक कि सूचियां समान न हों
  4. यदि मेरा सर्वर क्रैश हो जाता है और पुनरारंभ हो जाता है, तो यह केवल # 1 पर वापस जारी रह सकता है

मुझे एक मास्टर सूची और एक "in_progress" सूची की आवश्यकता है क्योंकि एक ही मास्टर सूची का उपयोग करके कई समाचार पत्र भेजे जा सकते हैं।

(नोट: मैं विफलता आइटम को ठीक करने के मामले को संभालूंगा, लेकिन अभी के लिए महत्वपूर्ण नहीं)

क्या यह लालियों के साथ संभव है?

शायद मुझे सूची और सॉर्ट किए गए सेट दोनों के संयोजन की आवश्यकता है, लेकिन मैं यह पता लगा सकता हूं कि यह कैसे करना है। मुझे RPOPLPUSH पसंद है लेकिन यह सूचियों के लिए है, और मुझे सूचियों की तुलना करने का एक तरीका चाहिए लेकिन वह सेट में है।

उत्तर:

उत्तर № 1 के लिए 1

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