Zum Hauptinhalt springen

Key-Value-Store (Redis-kompatibel)

Unser Key-Value-Store ist eine Redis-kompatible In-Memory-Datenbank, die als verteilter Cache und Message Broker eingesetzt werden kann. On-Demand Key-Value-Stores bieten begrenzte Konfigurationsmöglichkeiten. Für umfangreichere Einstellungen verwende bitte unsere Key-Value-Stores als Managed Service.

Erste Schritte

Du kannst nctl oder Cockpit, unsere Weboberfläche, verwenden, um zu beginnen:

  1. Erstelle einen Neuen Service direkt in Cockpit, um zu beginnen. Vergiss nicht, deine IP zu erlauben, um dich mit der Instanz zu verbinden.
  2. Rufe die Anmeldedaten von der Übersichtsseite ab. Notiere dir FQDN und Token. Der Benutzer "default" wird verwendet.
  3. Verbinde dich mit der neu erstellten Instanz:
    REDISCLI_AUTH="${TOKEN}" redis-cli --tls --insecure -h ${FQDN}

Die Instanzen können über das Cockpit, mit unserem Kommandozeilen-Tool nctl oder direkt über die API verwaltet werden.

Die Abrechnung erfolgt automatisch auf Basis der genutzten Ressourcen. Das automatisierte Management von Nine gewährleistet einen reibungslosen Betrieb des Dienstes.

Updates und Wartungsfenster

Sicherheits- und Softwareupdates werden während des NKE Wartungsfensters durchgeführt.

Während der Wartungsfenster kann es zu kurzen Serviceunterbrechungen kommen, ohne dass dies vorher angekündigt wird.

Preise

nine-key-value-store-256mbnine-key-value-store-1gbnine-key-value-store-2gbx gb
RAM256 MB1 GB2 GBx GB
Speicherplatz512 MB2 GB4 GBx * 2 GB
Monatliche KostenCHF 5.58CHF 22.32CHF 44.64x * CHF 22.32

Achtung, der Speicherplatz kann nicht verringert werden und basiert auf der konfigurierten Menge RAM.

Preise für On-Demand Key-Value Stores beginnen bei CHF 5.58. Zusätzliche Gebühren basieren auf den genutzten Ressourcen.

Konfigurationsoptionen

Die On-Demand Services bieten eine Basiskonfiguration, die für die meisten Anforderungen geeignet ist, wobei einige Optionen angepasst werden können. Die Anpassung der Konfigurationsoptionen kann zu einem Neustart der Instanz führen.

Die folgenden Konfigurationsparameter kannst du verwenden, um die Datenbankinstanz an deine Bedürfnisse anzupassen.

Name

Der Name der Datenbankinstanz kann frei gewählt werden, muss aber einzigartig sein. Nach der Erstellung kann der Name nicht mehr geändert werden.

Standort

Je nach verfügbaren Ressourcen können Instanzen an diesen Standorten erstellt werden:

API / Cockpit NameNameStandort
nine-es34NTT Zürich 1Rümlang

Alle Standorte befinden sich physisch in der Schweiz — siehe Rechenzentrums-Standorte für Details.

Der Standort kann nach der Erstellung der Ressource nicht mehr geändert werden.

Version

Für unseren On-Demand Key-Value Store verwenden wir Valkey 9.

Valkey ist ein Open-Source-Fork von Redis und in der verwendeten Version mit Redis kompatibel. Bestehende Redis-Clients und Anwendungen können daher ohne Anpassungen verwendet werden.

Erlaubte IP-Adressen

IPv4-Adressen und Adressbereiche, von denen aus Verbindungen zum Service hergestellt werden können. Der Zugriff von unseren Kubernetes-Produkten NKE und GKE sowie von Deploio ist bereits aktiviert.

Die Zugriffsbeschränkung kann jederzeit angepasst werden. Anpassungen werden unterbrechungsfrei wenige Momente nach dem Absenden des Formulars wirksam.

maxmemory Policy

Die Konfigurationsoption maxmemory_policy definiert was passieren soll, wenn der verfügbare Speicher erschöpft ist. Standardmässig wird die Policy allkeys-lru verwendet, welche die zuletzt verwendeten Schlüssel behält und die am wenigsten kürzlich verwendeten (LRU) Schlüssel entfernt. Eine Anpassung der Max-Memory Policy führt zu einem Neustart der Instanz.

Eine Übersicht über alle Policies findet sich in der Redis-Dokumentation.

RAM (Memory Size)

Die Grösse des Speichers (RAM), welcher für den Key-Value-Stores konfiguriert wird.

Die für den Festplattenspeicher benötigte Menge steigt linear mit diesem Wert. Beachte, dass eine Verringerung der Speichergrösse nicht die Menge des verwendeten Festplattenspeichers verringert.

Eine Anpassung der Speichergrösse führt zu einem Neustart der Instanz.

Verbindung

tip

Gemäss Erlaubte IP-Adressen musst du möglicherweise zusätzliche IPs erlauben.

Die Instanzen sind über den Standard-Redis-Port 6379 erreichbar.

Benutzer

Ein Benutzer "default" mit einem Passwort wird für die Verbindungsauthentifizierung erstellt, wenn die Instanz erstellt wird. Da "default" der Standardbenutzer ist, ist beim Verbinden nur das Passwort erforderlich. Details zum Abrufen der Anmeldedaten findest du im Abschnitt Erste Schritte.

note

Das Kommando FLUSHALL zum Löschen aller Schlüssel in allen Datenbanken ist in unserem Key-Value-Store Produkt nicht freigegeben. Du kannst das Kommando FLUSHDB zum Löschen aller Schlüssel in der aktuell ausgewählten Datenbank verwenden.

TLS

note

Das CA-Zertifikat stimmt nicht mit dem Hostnamen des Dienstes überein. Möglicherweise musst du die Hostnamen-Überprüfung explizit deaktivieren.

Die On-Demand Services akzeptieren nur Verbindungen, die durch TLS gesichert sind. Je nach verwendetem Client oder verwendeter Bibliothek kann es erforderlich sein, TLS explizit zu aktivieren.

Das TLS-Zertifikat ist selbstsigniert. Zusätzlich zur Aktivierung der TLS-Transportverschlüsselung musst du möglicherweise die für die Validierung verwendete Zertifizierungsstelle bereitstellen.

Du kannst die CA entweder via Cockpit oder nctl abrufen:

  1. Öffne die On-Demand Services Übersicht und wähle den entsprechenden Service aus.
  2. Die CA ist unter dem Zertifikat-Tab der Ressource verfügbar.

Deploio-Umgebungsvariablen

Wenn dieser Service von einer Deploio-Applikation referenziert wird, injiziert Nine Verbindungsdaten als Umgebungsvariablen. <NAME> ist der Name der Ziel-Serviceressource, in Grossbuchstaben mit nicht-alphanumerischen Zeichen ersetzt durch _.

VariableBeschreibung
NINE_KVS_<NAME>_FQDNHostname. Verwendet privates Networking-DNS, wenn privates Networking konfiguriert ist; andernfalls den öffentlichen Hostname.
NINE_KVS_<NAME>_PORTPort (immer 6379).
NINE_KVS_<NAME>_USERBenutzername.
NINE_KVS_<NAME>_PASSWORDPasswort.
NINE_KVS_<NAME>_CA_CERTCA-Zertifikat. Wird nur injiziert, wenn ein CA-Zertifikat vorhanden ist.

Sicherungen

Schlüssel und Werte bleiben über Instanzneustarts hinweg erhalten, es werden jedoch keine Sicherungen erstellt.

Wenn du selbst eine Sicherung erstellen möchtest, kannst du mit RedisShake alle Schlüssel einer Datenbank in eine Datei exportieren. Lade die passende Version für dein System herunter und führe die Befehle auf deinem lokalen Rechner oder auf einem anderen System aus, dessen IP-Adresse sich mit der Instanz verbinden darf. Details dazu findest du unter Erlaubte IP-Adressen.

warnung

Eine Sicherung enthält nicht die Information, aus welcher Datenbank ihre Schlüssel stammen. Sichere daher immer nur eine Datenbank pro Datei und stelle jede Datei in die Datenbank mit derselben Nummer wieder her.

dbs akzeptiert zwar mehrere Datenbanken, exportierst du sie aber in eine einzige Datei, werden beim Wiederherstellen alle Schlüssel in eine Datenbank importiert. Falls ein Schlüssel in mehreren Datenbanken vorkommt, gehen die Daten beim Import verloren.

Sicherung erstellen

Um zu sehen, welche Datenbanken Schlüssel enthalten und daher gesichert werden müssen, führe folgenden Befehl aus:

REDISCLI_AUTH="${TOKEN}" redis-cli --tls --insecure -h "${FQDN}" INFO keyspace

Erstelle eine Datei shake.toml mit folgendem Inhalt. Ersetze FQDN und Token durch die Werte deiner Instanz und setze dbs auf die Datenbank, die du sichern möchtest. Verwende für filepath einen absoluten Pfad:

[scan_reader]
address = "${FQDN}:6379"
username = "default"
password = "${TOKEN}"
tls = true
dbs = [0]
count = 100

[file_writer]
filepath = "/pfad/zu/sicherung-db0.aof"
type = "aof"

Der folgende Befehl erstellt die Sicherung:

redis-shake shake.toml

Wiederhole das mit angepasstem dbs und filepath für jede weitere Datenbank, die Schlüssel enthält.

Sicherung wiederherstellen

Stelle jede Datei in die Datenbank wieder her, aus der sie exportiert wurde. Die Option -n wählt diese Datenbank aus:

REDISCLI_AUTH="${TOKEN}" redis-cli \
--tls \
--insecure \
-h "${FQDN}" \
-p 6379 \
-n 0 \
--pipe < /pfad/zu/sicherung-db0.aof

Beim Wiederherstellen werden Schlüssel, die in der Zieldatenbank bereits vorhanden sind, nicht überschrieben. Der Versuch scheitert mit dem Fehler BUSYKEY Target key name already exists.. Der Key behält seinen aktuellen Wert und wird in der errors-Zeile mitgezählt, die redis-cli am Ende ausgibt. Leere die Datenbank vorher mit FLUSHDB, damit sie exakt dem Stand der Sicherung entspricht, und prüfe danach, dass redis-cli errors: 0 meldet.