वास्तव में! ऐसा इसलिए है क्योंकि स्कैन इस तरह से काम करता है, रेडिस दस्तावेज से उद्धृत:
<ब्लॉकक्वॉट>हालाँकि, SMEMBERS जैसे ब्लॉकिंग कमांड उन सभी तत्वों को प्रदान करने में सक्षम होते हैं जो एक निश्चित क्षण में एक सेट का हिस्सा होते हैं, कमांड का SCAN परिवार केवल सीमित गारंटी प्रदान करता है संग्रह के बाद से लौटाए गए तत्वों के बारे में जिन्हें हम वृद्धिशील रूप से पुनरावृति करते हैं, पुनरावृत्ति प्रक्रिया के दौरान बदल सकते हैं।
हालाँकि, क्योंकि SCAN में बहुत कम स्थिति जुड़ी हुई है (सिर्फ कर्सर) इसमें निम्नलिखित कमियाँ हैं:किसी दिए गए तत्व को कई बार वापस किया जा सकता है। डुप्लिकेट तत्वों के मामले को संभालने के लिए यह एप्लिकेशन पर निर्भर है , उदाहरण के लिए केवल लौटाए गए तत्वों का उपयोग उन कार्यों को करने के लिए किया जाता है जो कई बार पुन:लागू होने पर सुरक्षित होते हैं।
तो आप array_unique($keys) . का उपयोग करना चाहते हैं का उपयोग करना चाह सकते हैं foreach
. के बाद ।
यह समझने के लिए कि पुनरावृत्ति इस तरह से क्यों काम करती है, सबसे अच्छी बात यह है कि Redis दस्तावेज़ के इस भाग को पढ़ें ।