Zum Hauptinhalt springen

Redis und KeyDB In-Memory-Datenbanken

Auf dieser Seite finden Sie Informationen zu Redis als Managed Service. Redis ist eine nicht-relationale In-Memory-Datenbank, die Daten als Schlüssel und Werte speichert. Falls gewünscht, kann stattdessen der Fork KeyDB verwendet werden, der mit Redis kompatibel ist und den Fokus auf eine bessere Performanz mit einer Multithreading-Engine legt.

IP/Port

Redis ist standardmässig auf Port 6379 erreichbar. Der Dienst ist dabei auf localhost gebunden und kann nicht von extern aufgerufen werden. Bei Verwendung eines separaten Managed Server für Redis können wir die Konfiguration entsprechend anpassen, damit der Dienst beispielsweise von Ihrem Webserver aus erreicht werden kann.

Verwaltung des Speichers

Persistenz

Keys werden während der Laufzeit von Redis im Arbeitsspeicher abgelegt und nicht von der Festplatte gelesen, was eine ausserordentliche Performanz ermöglicht. Es finden folglich keine konsistenten Schreiboperationen auf einen langlebigen Speicherort statt, was bedeutet, dass die Persistenz der Daten nicht garantiert werden kann.

Um sicherzustellen, dass bereits geschriebene Keys nicht verloren gehen, wenn der Redis-Service oder der Managed Server neu gestartet wird, werden diese regelmässig auf die Festplatte geschrieben. Es gelten dabei folgende Intervalle:

  • Alle 900 Sekunden wenn mindestens ein Key verändert wurde
  • Alle 300 Sekunden wenn mindestens 10 Keys verändert wurden
  • Alle 60 Sekunden wenn mindestens 10000 Keys verändert wurden

Auf Wunsch können die Intervalle vom Nine Support angepasst und die Snapshot-Datei in die reguläre Backup-Routine aufgenommen werden.

Was passiert, wenn kein Speicher mehr alloziert werden kann?

Einer Redis-Instanz wird ein Viertel des auf dem Managed Server verfügbaren Arbeitsspeichers zugewiesen.

Vordefinierte Strategien legen fest, was geschehen soll, wenn der verfügbare Speicher erschöpft ist. Die Strategien werden durch die maxmemory_policy definiert. Standardmässig ist die Policy allkeys-lru konfiguriert, welche sich folgendermassen verhält:

allkeys-lru: Behält die zuletzt verwendeten Keys, entfernt die am längsten nicht verwendeten Keys

Dadurch wird sichergestellt, dass bei Schreibzugriffen keine Daten aufgrund von fehlendem Speicher verloren gehen. Um den benötigten Platz zu schaffen, werden dabei automatisch Keys gelöscht, auf die am längsten nicht mehr zugegriffen wurde. Diese Art von Balance soll in einer Vielzahl von Szenarien die bestmögliche Verfügbarkeit der Applikation gewährleisten.

Wenn Sie die Zugriffsmuster Ihrer Applikation bereits genau kennen, auf Langlebigkeit der Keys angewiesen sind oder beispielsweise mit TTLs arbeiten und volatile-lru verwenden möchten, kontaktieren Sie gerne unseren Support, um diese Standardkonfiguration anzupassen. Eine Übersicht aller Policies ist der Redis Dokumentation zu entnehmen.