इसे करने का कोई सीधा या आसान तरीका नहीं है। विलंबित कार्य sorted sets
. में रखे जाते हैं score
. के रूप में संसाधित होने वाले समय के रूप में और जॉब पेलोड value
. के रूप में ।
सॉर्ट किए गए सेट से किसी तत्व को निकालने के कई तरीके हैं (उनमें से अधिकांश को विलंबित कतार के आकार के आधार पर कुछ प्रयासों की आवश्यकता होती है) जैसे कि
- आपको भेजे गए कार्य का "सटीक" पेलोड मिलता है और फिर इसे हटाने के लिए ZREM का उपयोग करें। यह कठिन है क्योंकि वस्तु (सभी मापदंडों के साथ नौकरी का क्रमबद्ध संस्करण) बहुत बड़ा हो सकता है और आप "सटीक" नौकरी नहीं बना सकते क्योंकि इसकी एक विशिष्ट पहचानकर्ता है। आप इसकी सूची ZRANGEBYSCORE और
WITHSCORES
. के साथ प्राप्त कर सकते हैं . यह आपको उनके स्कोर के साथ नौकरियों की सूची देगा। विलंबित नौकरी की पहचान करने के लिए आप स्कोर का उपयोग कर सकते हैं। मान प्राप्त करें (क्रमबद्ध पेलोड) फिरZREM
. का उपयोग करें । - यदि किसी विशिष्ट समय पर केवल एक ही कार्य संसाधित किया जाना है, तो संसाधित समय का उपयोग करके ZREMRANGEBYSCORE का उपयोग कर सकते हैं। यदि ठीक उसी समय संसाधित किए जाने वाले n कार्य हैं तो
ZREMRANGEBYSCORE
के बाद से अन्य कार्य भी हटाए जा सकते हैं समय अंतराल लेता है। - आप पूरी विलंबित सूची (पेजिनेशन के साथ) को स्कैन करने और नौकरी के स्कोर और पहचानकर्ता को खोजने के लिए ZSCAN का उपयोग करने का प्रयास कर सकते हैं, और फिर इसे हटाने के लिए पहचानकर्ता के साथ ZREMRANGEBYLEX का उपयोग कर सकते हैं।
- एक और तरीका यह हो सकता है कि
handle
. की शुरुआत में रद्द करने की शर्त रखी जाए तरीका। इसके लिए एप्लिकेशन लेयर डेवलपमेंट की आवश्यकता होती है। जब भी आप किसी नौकरी को कतार में धकेलते हैं तो आप नौकरी के लिए एक पहचानकर्ता भेजते हैं, वही पहचानकर्ता (जिसे आप समझ सकते हैं) को रेडिस में भी डाल दें (EXPIRE
के साथ) विलंबित समय से अधिक)। जब आप इसे रद्द करना चाहते हैं, तो इसे रेडिस से हटा दें। हैंडल विधि के अंदर जांचें कि क्या दिया गया पहचानकर्ता रेडिस में मौजूद है, यदि कोड ब्लॉक से जल्दी वापस नहीं आता है।