Der Name Redis steht für Remote Dictionary Server. Diese Art von Servereignet sich als schneller Datenspeicher. Redis bietet als Datenbank-Management-System (DBMS) zugleich eine In-Memory-Datenbank und einen Key-Value-Store.
- In-Memory-Datenbank: Bei solchen Datenbanken speichert das DBMS alle Daten direkt im Arbeitsspeicher. Das sorgt für sehr kurze Zugriffszeiten – auch bei großen, unstrukturierten Datenmengen.
- Key-Value-Store: Auch Schlüssel-Wert-Datenbanken überzeugen mit hoher Performanz und lassen sich dank der einfachen Struktur leicht skalieren. Zu jedem Eintrag wird ein Schlüssel erstellt, über den die Information dann wieder aufgerufen werden kann.
Alle Daten liegen also bei einem Redis-Server nicht auf der Festplatte, sondern im Arbeitsspeicher. Durch diese Entscheidung ist Redis sowohl Cache als auch Speicher: Ob die Informationen dauerhaft in der Datenbank liegen oder nur kurzzeitig, macht für Redis keinen Unterschied.
Jeder Eintrag in der Datenbank erhält einen Schlüssel. Über diese Schlüssel können Daten dann wieder ganz einfach abgerufen werden. Die Einträge sind also nicht untereinander verknüpft und müssen daher auch nicht über mehrere Tabellen hinweg angefordert werden. Die Informationen stehen direkt zur Verfügung.
Mit der Ablage im Arbeitsspeicher geht aber auch die Gefahr einher, bei einem Serverabsturz sämtliche Daten zu verlieren. Um dies zu verhindern, kann Redis entweder alle Daten regelmäßig auf Backup-Festplatte duplizieren oder alle Befehle, die für eine Rekonstruktion nötig sind, in eine Log-Datei speichern.
Die typische Datenstruktur von Redis sind Strings, also einfache Zeichenfolgen. Auch die Schlüssel (der eine Teile des Key-Value-Stores) sind als String realisiert. Das System kann aber auch mit weiteren Datenstrukturen umgehen:
- Strings: eine Zeichenfolge mit einer Maximalgröße von 512 MB
- Hashes: Eintrag mit mehreren Feldern
- Lists: Sammlung aus Strings, die nach der Reihenfolge der Eintragung sortiert ist
- Sets: eine unsortierte Sammlung aus Strings
- Sorted Sets: eine vom Nutzer sortierte Sammlung von Strings
- Bitmaps: Sammlung an Operationen auf Bit-Ebene
- HyperLogLogs: Schätzung auf Basis von eindeutigen Werten
- Streams: Liste von Strings oder komplexen Key-Value-Paaren
Da Redis Open Source ist, arbeiten viele Entwickler an Erweiterungen für das DBMS. Diese Module erweitern die Funktionalität der ansonsten sehr schlanken Datenbank und passen die Software für spezifische Einsatzgebiete an.