जीने के लिए समय और ईशचे में निष्क्रिय होने के बीच अंतर कैसे करें


103

Ehache पर डॉक्स कहते हैं:

timeToIdleSeconds: Sets the time to idle for an element before it expires.
i.e. The maximum amount of time between accesses before an element expires

timeToLiveSeconds: Sets the time to live for an element before it expires.
i.e. The maximum time between creation time and when an element expires.

मैं समय को समझता हूं

लेकिन क्या इसका मतलब यह है कि कैश आइटम के निर्माण और पहली पहुंच के बाद, TimeToLiveSeconds अब लागू नहीं है?

जवाबों:


156

timeToIdleSecondsकैश्ड ऑब्जेक्ट को तब तक सक्षम बनाए रखता है, जब तक उससे कम अवधि में अनुरोध किया जाता है timeToIdleSecondstimeToLiveSecondsकैश्ड वस्तु को अमान्य बना दिया जाएगा उसके बाद कई सेकंड चाहे वह कितनी बार या जब अनुरोध किया गया था।

चलिए बताते हैं timeToIdleSeconds = 3। यदि 4 सेकंड के लिए अनुरोध नहीं किया गया है तो फिर वस्तु को अमान्य कर दिया जाएगा।

यदि timeToLiveSeconds = 90, तो वस्तु को 90 सेकंड के बाद कैश से हटा दिया जाएगा, भले ही इसके छोटे जीवन के 90 वें सेकंड में कुछ मिलीसेकंड का अनुरोध किया गया हो।


1
इसलिए मुझे लगता है कि हम हमेशा सुस्ती <ttl
जैक्स रेने मेसरिन

ऊपर टिप्पणी में जब आप कहते हैं कि "चलो कहते हैं कि timeToIdleSeconds = 3. ऑब्जेक्ट अमान्य हो जाएगा यदि इसे 4 सेकंड के लिए अनुरोध नहीं किया गया है।", जब आप अमान्य कहते हैं - इसका क्या मतलब है? क्या यह इसे ढेर से हटा देता है? यदि ऑब्जेक्ट को कैश से हटा दिया जाता है, तो मैं इस बारे में उलझन में हूं कि timeToLive पैरामीटर का उपयोग क्या है। जब हमने POC किया था, तो हम देख रहे हैं कि डेटा timetoIdleseconds के बाद स्रोत से प्राप्त किया गया है। हालाँकि timetoLive एक बहुत अधिक मूल्य है, मुझे उम्मीद है कि यह कैश से प्राप्त किया जाता है क्योंकि timetoLive हमारे मामले में timeToIdle की तुलना में बहुत अधिक मूल्य है।
गायत्री

3
@ गायत्री यदि आपके पास एक डेटा आइटम है जो अक्सर (हर दो सेकंड में) एक्सेस किया जाता है, लेकिन टीटीएल साठ सेकंड का होता है। यह अभी भी स्रोत से हर साठ सेकंड में एक बार खींच लिया जाएगा, भले ही इसे लगातार (कभी बेकार नहीं) एक्सेस किया जाए।
सी। रॉस

8
पहली टिप्पणी के लिए अनुवर्ती (@ जैक्सरेनेमेसरीन द्वारा)। मामले के लिए TTL और TTI सेट (अर्थात शून्य से अधिक): 1) TTI> = TTL: TTI का कोई प्रभाव नहीं है । प्रवेश को 2 के बाद समाप्त माना जाता है creationTime + TTL) टीटीआई <टीटीएल: प्रविष्टि को समाप्त होने के बाद माना जाता हैmin((max(lastAccessTime, creationTime) + TTI), (creationTime + TTL))
तैमूर मिलनोव

"बेपरवाह" -> "परवाह किए बिना"
मैग्नस

41

आप दोनों सेट करते हैं, expirationTimeहो सकता है Math.min(ttlExpiry, ttiExpiry), जहां

ttlExpiry = creationTime + timeToLive
ttiExpiry = mostRecentTime + timeToIdle

पूर्ण स्रोत कोड यहाँ


1
अब व्यवहार मेरे लिए समझ में आता है। इस ओर इशारा करने के लिए धन्यवाद, विशेष रूप से Math.minभाग।
प्रकाश के।

यह कोड इसे मानव स्पष्टीकरण से अधिक स्पष्ट बनाता है :-)
Maga Abdurakhmanov

22

से वर्ष 1.1 प्रलेखन (गूगल कैश, जो ब्राउज़ करने के लिए आसान है और वर्तमान डॉक्स AFAIK की तुलना में अधिक जानकारीपूर्ण है में उपलब्ध):

timeToIdleSeconds

यह एक वैकल्पिक विशेषता है।

कानूनी मान 0 और Integer.MAX_VALUE के बीच पूर्णांक हैं।

यह कुछ सेकंड की संख्या है जो एक एलिमेंट को जीना चाहिए क्योंकि यह आखिरी बार इस्तेमाल किया गया था। प्रयुक्त साधन सम्मिलित या पहुँचा हुआ।

0 का एक विशेष अर्थ है, जो निष्क्रिय करने के लिए समय के लिए तत्व की जांच नहीं करना है, अर्थात यह हमेशा के लिए निष्क्रिय हो जाएगा।

डिफॉल्यू मूल्य शून्य है।

timeToLiveSeconds

यह एक वैकल्पिक विशेषता है।

कानूनी मान 0 और Integer.MAX_VALUE के बीच पूर्णांक हैं।

यह एक सेकंड की संख्या है जिसे एक एलिमेंट को तब से जीना चाहिए जब यह बनाया गया था। निर्मित का अर्थ है कैश में कैशे.पुट विधि का उपयोग करके डाला गया।

0 का एक विशेष अर्थ है, जो जीने के लिए समय के लिए तत्व की जांच नहीं करना है, अर्थात यह हमेशा के लिए जीवित रहेगा।

डिफॉल्यू मूल्य शून्य है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.