2015-06-01 3 views
8

मुझे पता है कि रेडिस में एक्सपेरिएट का उपयोग तब किया जाता है जब एक कुंजी समाप्त हो जाएगी। मेरी समस्या हालांकि यह है कि यह एक पूर्ण यूनिक्स टाइमस्टैम्प लेता है। मुझे लगता है कि अगर मुझे दिन के अंत में समाप्त होने की कुंजी चाहिए तो मुझे तर्क के रूप में क्या सेट करना चाहिए, इस बारे में सोचने में कठिनाई हो रही है।रेडिस - कुंजी दैनिक कैसे समाप्त करें

यह कैसे मैं अपने कुंजी सेट है:

client.set (कुंजी, शरीर);

तो में समाप्त सेट करने के लिए:

client.expireat (कुंजी, ???);

कोई विचार? मैं इसका उपयोग नोडज और sailsjs के साथ कर रहा हूँ धन्यवाद!

+0

जो आप रेडिस एनपीएम मॉड्यूल का उपयोग कर रहे हैं, यह है कि सभी redis npm मॉड्यूल समर्थन समाप्ति() फ़ंक्शन। ? –

उत्तर

17

आप इसे समाप्त करने के लिए 24 घंटे के बाद

client.expireat(key, parseInt((+new Date)/1000) + 86400); 

या यदि आप यह आज के अंत में वास्तव में समाप्त करने के लिए चाहते हैं, आप .setHours एक new Date() वस्तु पर के अंत में समय प्राप्त करने के लिए उपयोग कर सकते हैं चाहते हैं दिन, और इसका इस्तेमाल करें।

var todayEnd = new Date().setHours(23, 59, 59, 999); 
client.expireat(key, parseInt(todayEnd/1000)); 
+0

धन्यवाद, यह काम करता है! :) – bless1204

+2

यह कहां दस्तावेज है? –

+0

मैं इसे कहीं भी दस्तावेज खोजने के लिए प्रबंधन नहीं किया था? आपको यह कैसे मिला? – Rouz

8

आप मूल्य और समाप्ति एक साथ सेट कर सकते हैं।

//here key will expire after 24 hours 
    client.setex(key, 24*60*60, value, function(err, result) { 
    //check for success/failure here 
    }); 

//here key will expire at end of the day 
    client.setex(key, parseInt((new Date().setHours(23, 59, 59, 999)-new Date())/1000), value, function(err, result) { 
    //check for success/failure here 
    }); 
+0

इसका काम लेकिन इस कमांड को अनदेखा करना बेहतर है .. क्योंकि रेडिस दस्तावेज़ में: "** _ नोट: चूंकि एसईटी कमांड विकल्प SETNX, SETEX, PSETEX को प्रतिस्थापित कर सकते हैं, यह संभव है कि इन्हें रेडिस के भविष्य के संस्करणों में तीन आदेशों को हटा दिया जाएगा और अंततः हटा दिया जाएगा ._ ** "[redis set command] (https://redis.io/commands/set) –

4

SETNX के बाद से, SETEX, PSETEX अगले विज्ञप्ति में बहिष्कृत कर दिया करने के लिए जा रहे हैं, सही तरीका है:

client.set(key, value, 'EX', 60 * 60 * 24, callback); 

ऊपर पर एक विस्तृत चर्चा के लिए here देखें।

संबंधित मुद्दे