चूंकि आप एक '...' कर रहे हैं, निश्चित रूप से कहना मुश्किल है, लेकिन मैं कहूंगा कि आप उस भाग के दौरान अपनी बंदर सेट कर रहे हैं, जो प्रभावी रूप से समाप्ति को हटा देगा।
From the EXPIRE manual
टाइमआउट केवल मंजूरी दे दी है जब कुंजी डेल आदेश का उपयोग कर हटाया या सेट का उपयोग ओवरराइट या GETSET आदेश
Also, regarding the -1 reply from TTL
वापसी मान
है
इंटीजर उत्तर: सेकंड में टीटीएल या -1 जब कुंजी मौजूद नहीं है या टाइमआउट नहीं है।
संपादित करें: ध्यान दें कि इस व्यवहार Redis 2,8
में बदल Redis 2.8 गलती की स्थिति में वापसी मान के साथ शुरू बदल दिया है:
आदेश रिटर्न -2 यदि कुंजी मौजूद नहीं है ।
कमांड -1 होता है यदि कुंजी मौजूद है लेकिन कोई संबद्ध समाप्ति नहीं है।
दूसरे शब्दों में, यदि आपकी कुंजी मौजूद है, तो यह लगातार प्रतीत होता है, यानी कोई समाप्ति सेट नहीं है।
संपादित करें: ऐसा लगता है कि अगर मैं एक RedIS गुलाम सर्वर पर कुंजी बना देता हूं, तो मैं इसे पुन: पेश कर सकता हूं, दास मास्टर इनपुट के बिना कुंजी को नहीं हटाएगा, क्योंकि आम तौर पर आप गुलाम पर स्थानीय रूप से कुंजी नहीं बनाते हैं। क्या यह मामला यहाँ है?
हालांकि, जबकि एक मास्टर से जुड़ा दास कुंजी स्वतंत्र रूप से समाप्त नहीं होगी (लेकिन डेल गुरु से आने के लिए इंतजार करेंगे), वे अभी भी पूरे राजकीय लूँगा की डेटासेट में मौजूदा समय सीमा समाप्त , इसलिए जब एक गुलाम को एक मास्टर के लिए चुना जाता है तो यह सक्षम हो जाएगा, चाबियों को स्वतंत्र रूप से समाप्त कर देगा, पूरी तरह से मास्टर के रूप में कार्य करेगा।
स्रोत
2012-08-07 15:31:26
आपके त्वरित उत्तर के लिए धन्यवाद। मेरे स्निपेट में '...' का मतलब केवल यह था कि टीटीएल रिटर्न -1 तक मैं 20s का इंतजार करता हूं। मैं यहां कोई आदेश टाइप नहीं करता हूं। तो समाप्ति का अंत खत्म होना चाहिए, नहीं? – user1151446
@ user1151446 मेरा संपादन देखें। –
धन्यवाद Joachim! यह बिल्कुल सही बात है, मैं अनजाने में मास्टर की बजाय दास पर अपनी कुंजी सेट करता हूं, जो असंगत है। अगर मैं अपने मास्टर पर स्विच करता हूं तो सब ठीक काम करता है। – user1151446