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 in der Regel während des NKE Wartungsfensters durchgeführt.

Daher kann es während dieses Wartungsfensters 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 Kostenx *

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

Preise für On-Demand Key-Value-Stores beginnen bei . 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 NameNameStandortNotizen
nine-cz42ColoZüri 4.2Altstetten, Zürich
nine-es34NTT Zürich 1Rümlang
nine-cz41ColoZüri 4.1Altstetten, ZürichNeue Ressourcen können nicht mehr in diesem Standort erstellt werden.

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

Version

Die neueste Version 7 von Redis wird zur Zeit für On-Demand Key-Value-Stores verwendet. Aufgrund von Lizenzänderungen und der damit verbundenen Unsicherheit über die zukünftige Entwicklung von Redis haben wir uns entschieden, in naher Zukunft eine Redis-kompatible Alternative als Ersatz zu verwenden.

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 werden über Instanzneustarts hinweg beibehalten, aber es werden keine wiederherstellbaren Datensicherungen erstellt.

Redis Input/Output Tools (RIOT)

Redis Input/Output Tools (RIOT) ist ein Kommandozeilenprogramm, um Daten in und aus einem Redis-kompatiblen Dokumentenspeicher zu holen.

Es kann zum Importieren und Exportieren von Dateien verwendet werden, aber auch zum Migrieren von einer zu einer anderen Instanz. Der einfachste Weg, RIOT auszuführen, ist über das bereitgestellte Docker Image riotx/riot.

Migrate Instance

RIOT kann verwendet werden, um alle Schlüssel von einer zu einer anderen Instanz zu migrieren. Verwende den folgenden Befehl, um alle Schlüssel der DB 0 von $SOURCE_HOST nach $TARGET_HOST zu migrieren.

tip

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

SOURCE_HOST=""
SOURCE_TOKEN=""
TARGET_HOST=""
TARGET_TOKEN=""
podman run --rm riotx/riot replicate \
--source-tls \
--source-insecure \
--target-tls \
--target-insecure \
--source-pass="$SOURCE_TOKEN" \
--target-pass="$TARGET_TOKEN" \
--threads 4 \
"redis://$SOURCE_HOST/0" \
"redis://$TARGET_HOST/0"