2012-03-22 19 views
20

में गैर-सीमा समाप्त होने वाली कुंजियों मेरी सेटअप में, info आदेश के बाद मुझे पता चलता है:ढूँढना Redis

[keys] => 1128 
[expires] => 1125 

मैं एक समय समाप्ति तिथि के बिना उन 3 कुंजी खोजने के लिए चाहते हैं। मैंने पहले से ही किसी भी लाभ के लिए दस्तावेज़ों की जांच की है। कोई विचार?

उत्तर

45

ऐसी साइट से संशोधित जो मैं अब नहीं पा रहा हूं।

redis-cli keys "*" | while read LINE ; do TTL=`redis-cli ttl "$LINE"`; if [ $TTL -eq -1 ]; then echo "$LINE"; fi; done; 
+7

टीटीएल कोई समाप्ति कुंजी ('3600' के बजाय) के लिए' -1' है। – Niloct

+1

यह एक उत्कृष्ट बिंदु है, इसे इंगित करने के लिए धन्यवाद। उत्तर संपादित किया और अपनी टिप्पणी को ऊपर उठाया। –

+0

जब मैं रिमोट रेडिस होस्ट पर कोशिश करता हूं तो मुझे एक त्रुटि मिलती है। मैं रिमोट होस्ट से कनेक्ट करता हूं और फिर प्रॉम्प्ट से चलाता हूं: 'कुंजी "*" | लाइन पढ़ने के दौरान; टीटीएल = 'redis-cli ttl $ LINE' करें; अगर [$ टीटीएल -इक -1]; फिर "$ LINE" गूंजें; फाई; किया गया; 'लेकिन मुझे एक "अवैध तर्क" त्रुटि मिली – emersonthis

1

मामले किसी में ग़लत तर्क या बहस त्रुटि, $ रेखा के आसपास डाल दोहरे उद्धरण चिह्नों की गलत संख्या हो रही है।

इसलिए, यह

redis-cli keys "*" | while read LINE ; do TTL=`redis-cli ttl "$LINE"`; if [ $TTL -eq -1 ]; then echo "$LINE"; fi; done; 

यह तब होता है जब वहाँ कुंजी में रिक्त स्थान हैं होगा।

+0

यह मौजूदा उत्तर पर एक सुधार (बग फिक्स) है और इस तरह के उत्तर का संपादन होना चाहिए। – AndrewF