चूंकि आप '...' कर रहे हैं, यह निश्चित रूप से कहना मुश्किल है, लेकिन मैं कहूंगा कि आप उस हिस्से के दौरान mykey सेट कर रहे हैं, जो प्रभावी रूप से समाप्ति को हटा देगा।
EXPIRE मैनुअल से
<ब्लॉकक्वॉट>टाइमआउट तभी क्लियर होता है जब कुंजी को DEL कमांड का उपयोग करके हटा दिया जाता है या SET या GETSET कमांड का उपयोग करके ओवरराइट किया जाता है
साथ ही, टीटीएल के -1 उत्तर के संबंध में
<ब्लॉकक्वॉट>वापसी मूल्य
पूर्णांक उत्तर:टीटीएल सेकंड या -1 में जब कुंजी मौजूद नहीं है या समयबाह्य नहीं है।
संपादित करें:ध्यान दें कि यह व्यवहार Redis 2.8 में बदल गया है
<ब्लॉकक्वॉट>
रेडिस 2.8 से शुरू होने पर त्रुटि के मामले में वापसी मूल्य बदल जाता है:
यदि कुंजी मौजूद नहीं है तो कमांड -2 लौटाता है।
यदि कुंजी मौजूद है लेकिन कोई संबद्ध समाप्ति नहीं है तो कमांड -1 लौटाता है। पी>
दूसरे शब्दों में, यदि आपकी कुंजी मौजूद है, तो यह स्थायी प्रतीत होगी, अर्थात कोई समाप्ति सेट नहीं है।
संपादित करें:ऐसा लगता है कि अगर मैं रेडिस दास सर्वर पर कुंजी बना देता हूं तो मैं इसे पुन:उत्पन्न कर सकता हूं, दास मास्टर इनपुट के बिना कुंजी को नहीं हटाएगा, क्योंकि आम तौर पर आप दास पर स्थानीय रूप से कुंजी नहीं बनायेंगे। क्या यहाँ ऐसा ही है?
<ब्लॉकक्वॉट>हालाँकि, जबकि एक मास्टर से जुड़े दास स्वतंत्र रूप से कुंजी समाप्त नहीं करेंगे (लेकिन मास्टर से आने वाले DEL की प्रतीक्षा करेंगे), वे अभी भी डेटासेट में मौजूद समाप्ति की पूरी स्थिति लेंगे, इसलिए जब एक दास को एक मास्टर के लिए चुना जाता है पूरी तरह से एक मास्टर के रूप में कार्य करते हुए, चाबियों को स्वतंत्र रूप से समाप्त करने में सक्षम होंगे।