यदि आपके पास वर्चुअल मेमोरी कार्यक्षमता चालू है (संपादित करें:अब बहिष्कृत ), फिर मेमोरी खत्म होने पर Redis डिस्क पर "अक्सर-अक्सर-उपयोग नहीं" डेटा को स्टोर करना शुरू कर देता है।
यदि Redis में वर्चुअल मेमोरी अक्षम है (डिफ़ॉल्ट) और maxmemory पैरामीटर सेट है (डिफ़ॉल्ट), Redis maxmemory . से अधिक मेमोरी का उपयोग नहीं करेगा अनुमति देता है। अगर आप maxmemory बदलते हैं बंद, रेडिस वर्चुअल मेमोरी (यानी स्वैप) का उपयोग करना शुरू कर देगा, और प्रदर्शन में जबरदस्त गिरावट आएगी।
maxmemory . होने पर Redis के नए संस्करणों में विभिन्न नीतियां होती हैं पहुँच गया है:
volatile-lru- हाल ही में उपयोग नहीं की गई कुंजियों को निकालने का प्रयास करते हुए, समय सीमा समाप्त सेट वाले लोगों के बीच एक कुंजी को हटा दें।volatile-ttl- उन लोगों के बीच एक कुंजी को हटा दें जिनकी समय सीमा समाप्त हो गई है, कम शेष समय के साथ कुंजियों को हटाने का प्रयास कर रहे हैं।volatile-random- एक्सपायर सेट वाली रैंडम कुंजी को हटा दें।allkeys-lru- जैसेvolatile-lru, लेकिन एक समय सीमा समाप्त होने वाले सेट के साथ सामान्य कुंजियों या कुंजियों दोनों की हर प्रकार की कुंजी को हटा देगा।allkeys-random-जैसेvolatile-random, लेकिन हर तरह की चाबियों को हटा देगा, दोनों सामान्य कुंजियाँ और एक समय सीमा समाप्त होने वाली कुंजियाँ।
यदि आप ऐसी नीति चुनते हैं जो केवल EXPIRE सेट वाली कुंजियों को हटाती है, तो जब Redis की मेमोरी समाप्त हो जाती है, तो ऐसा लगता है कि प्रोग्राम केवल malloc () ऑपरेशन को रोक देता है। यही है, यदि आप अधिक डेटा संग्रहीत करने का प्रयास करते हैं, तो लेखन कार्य विफल हो जाता है।
अधिक जानकारी के लिए कुछ लिंक:
- https://antirez.com/post/redis-as-LRU-cache.html
- https://eli.thegreenplace.net/2009/10/30/handling-out-of-memory-conditions-in-c/