Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

रेडिस की एक्सपायरी कुंजी कैसे होती है?

संक्षेप में - प्रत्येक रेडिस ऑब्जेक्ट के लिए एक समाप्ति समय होता है। जब तक आप ऑब्जेक्ट को समाप्त होने के लिए सेट नहीं करते, वह समय "कभी नहीं" होता है।

अब, समाप्ति तंत्र स्वयं अर्ध-आलसी है। आलसी समाप्ति का मतलब है कि आप वास्तव में वस्तुओं को तब तक समाप्त नहीं करते जब तक कि वे पढ़े नहीं जाते। किसी ऑब्जेक्ट को पढ़ते समय, हम उसकी समाप्ति टाइमस्टैम्प की जांच करते हैं, और यदि वह अतीत में है, तो हम कुछ भी नहीं लौटाते हैं, और जब हम उस पर होते हैं तो ऑब्जेक्ट को हटा देते हैं। लेकिन समस्या यह है कि अगर किसी कुंजी को कभी छुआ नहीं जाता है, तो वह बिना किसी कारण के सिर्फ मेमोरी लेती है।

तो रेडिस यादृच्छिक सक्रिय समाप्ति की दूसरी परत जोड़ता है। यह हर समय यादृच्छिक कुंजी पढ़ता है, और जब एक समाप्त कुंजी को छुआ जाता है तो आलसी तंत्र के आधार पर इसे हटा दिया जाता है। यह समाप्त होने वाले व्यवहार को प्रभावित नहीं करता है, यह केवल समाप्त हो चुकी चाबियों का "कचरा संग्रह" जोड़ता है।

बेशक वास्तविक कार्यान्वयन इससे कहीं अधिक जटिल है, लेकिन यह मुख्य विचार है।

आप इसके बारे में यहाँ और अधिक पढ़ सकते हैं:http://redis.io/commands/expire

और सक्रिय समाप्ति चक्र के लिए स्रोत कोड यहां पाया जा सकता है:https://github.com/antirez/redis/blob/a92921da135e38eedd89138e15fe9fd1ffdd9b48/src/expire.c#L98



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. लेन-देन के साथ स्प्रिंग RedisConnectionFactory पूल से कनेक्शन वापस नहीं कर रहा है और समाप्त होने पर ब्लॉक कर देता है

  2. नेस्टेड अपवाद है redis.clients.jedis.exceptions.JedisConnectionException:पूल से संसाधन नहीं मिल सका

  3. जावा क्लाइंट के साथ की-वैल्यू डेटाबेस

  4. सिम्फनी पर रेडिस कैश उपसर्ग कुंजी सेट करें

  5. Redis/NoSQL में अवधारणा बनाने में मदद चाहिए