sql >> Database >  >> NoSQL >> Redis

Wat doet Redis als het geheugen vol raakt?

Als je de functionaliteit van virtueel geheugen hebt ingeschakeld (EDIT:nu verouderd ), dan begint Redis de "niet zo vaak gebruikte" gegevens op schijf op te slaan wanneer het geheugen opraakt.

Als virtueel geheugen in Redis is uitgeschakeld (standaard) en de maxmemory parameter is ingesteld (de standaard), zal Redis niet meer geheugen gebruiken dan maxmemory toestaat. Als je maxmemory . draait uit, zal Redis virtueel geheugen gaan gebruiken (d.w.z. swap), en de prestaties zullen enorm dalen.

Nieuwere versies van Redis hebben verschillende beleidsregels wanneer maxmemory is bereikt:

  • volatile-lru - verwijder een sleutel onder degenen met een verlopen set, probeer sleutels te verwijderen die niet recentelijk zijn gebruikt.
  • volatile-ttl - verwijder een sleutel onder degenen met een verlopen set, probeer sleutels te verwijderen met een korte resterende tijd om te leven.
  • volatile-random - verwijder willekeurige sleutel onder degenen met een verlopen set.
  • allkeys-lru - likevolatile-lru , maar zal alle soorten sleutels verwijderen, zowel normale sleutels als sleutels met een verlopen set.
  • allkeys-random -like volatile-random , maar zal alle soorten sleutels verwijderen, zowel normale sleutels als sleutels met een vervalset.

Als u een beleid kiest dat alleen sleutels verwijdert met een EXPIRE-set, lijkt het erop dat wanneer Redis onvoldoende geheugen heeft, het programma de malloc()-bewerking gewoon afbreekt. Dat wil zeggen, als u probeert meer gegevens op te slaan, mislukt de schrijfbewerking gewoon.

Enkele links voor meer info:

  • http://antirez.com/post/redis-as-LRU-cache.html
  • http://eli.thegreenplace.net/2009/10/30/handling-out-of-memory-conditions-in-c/


  1. Breng uw eigen Azure-accounts mee - Hosting voor MongoDB® &Redis™ bij ScaleGrid

  2. Hoe sadd te gebruiken met meerdere elementen in Redis met behulp van Python API?

  3. Mangoose-validatiefouten afhandelen - waar en hoe?

  4. Welke Python API moet worden gebruikt met Mongo DB en Django