Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Was macht Redis, wenn der Speicher knapp wird?

Wenn Sie die virtuelle Speicherfunktion aktiviert haben (BEARBEITEN:jetzt veraltet ), dann beginnt Redis, die "nicht so häufig verwendeten" Daten auf der Festplatte zu speichern, wenn der Speicher knapp wird.

Wenn der virtuelle Speicher in Redis deaktiviert ist (Standardeinstellung) und die Datei maxmemory Parameter gesetzt ist (Standardeinstellung), verwendet Redis nicht mehr Speicher als maxmemory erlaubt. Wenn Sie maxmemory einschalten aus, beginnt Redis mit der Nutzung des virtuellen Speichers (d. h. Swap) und die Leistung wird enorm sinken.

Neuere Versionen von Redis haben verschiedene Richtlinien, wenn maxmemory erreicht ist:

  • volatile-lru - Entfernen Sie einen Schlüssel unter denen mit einem Ablaufsatz, indem Sie versuchen, kürzlich nicht verwendete Schlüssel zu entfernen.
  • volatile-ttl - Entfernen Sie einen Schlüssel unter denen mit einem Ablaufsatz, versuchen Sie, Schlüssel mit kurzer Restlebensdauer zu entfernen.
  • volatile-random - Entfernen Sie einen zufälligen Schlüssel unter denen mit einem Expire-Set.
  • allkeys-lru - wie volatile-lru , entfernt aber jede Art von Schlüssel, sowohl normale Schlüssel als auch Schlüssel mit Ablaufdatum.
  • allkeys-random -wie volatile-random , entfernt jedoch alle Arten von Schlüsseln, sowohl normale Schlüssel als auch Schlüssel mit Ablaufsatz.

Wenn Sie eine Richtlinie auswählen, die nur Schlüssel mit einem EXPIRE-Set entfernt, dann sieht es so aus, als ob das Programm die malloc()-Operation einfach abbricht, wenn Redis nicht mehr genügend Arbeitsspeicher zur Verfügung steht. Das heißt, wenn Sie versuchen, mehr Daten zu speichern, schlägt der Schreibvorgang einfach fehl.

Einige Links für weitere Informationen:

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