Redis

Der schnelle Open-Source-in-Memory-Datenspeicher kann als Datenbank, Cache-Speicher, Message Broker und Warteschlange genutzt werden.

Was ist Redis?

Redis, die Abkürzung für Remote Dictionary Server, ist ein schneller, quelloffener In-Memory-Schlüsselwert-Datenspeicher. Das Projekt entstand, als Salvatore Sanfilippo, der ursprüngliche Entwickler von Redis, versuchte, die Skalierbarkeit seines italienischen Start-ups zu verbessern. Daraufhin entwickelte er Redis, das heute als Datenbank, Cache, Message Broker und Warteschlange eingesetzt wird.

Redis bietet Reaktionszeiten von unter einer Millisekunde und kann so Millionen von Anforderungen für Echtzeitanwendungen in den Bereichen Gaming, Ad-Tech, Finanzdienstleistungen, Gesundheitswesen und IoT verarbeiten. Heute ist Redis eine der beliebtesten Open-Source-Engines und wurde von Stack Overflow fünf Jahre lang zur "Most loved" Datenbank gekürt. Aufgrund seiner schnellen Leistung ist Redis eine beliebte Wahl für Caching, Sitzungsmanagement, Spiele, Leaderboards, Echtzeit-Analysen, Geodaten, Ride-Hailing, Chat/Messaging, Medien-Streaming und Pub/Sub-Anwendungen.

AWS bietet zwei vollständig verwaltete Services für den Betrieb von Redis. Amazon MemoryDB for Redis ist ein Redis-kompatibler, langlebiger In-Memory-Datenbank-Service, der eine extrem schnelle Leistung bietet. Amazon ElastiCache for Redis ist ein vollständig verwalteter Caching-Service, der den Datenzugriff von Primärdatenbanken und Datenspeichern mit einer Latenzzeit von Mikrosekunden beschleunigt. Darüber hinaus bietet ElastiCache auch Unterstützung für Memcached, eine weitere beliebte Open-Source-Caching-Engine.

Wenn Sie mehr darüber erfahren möchten, wie Sie Ihre Anwendungen mit Amazon ElastiCache für Redis beschleunigen können, sehen Sie sich diesen Online-Techniktalk an. 

Vorteile von Redis

Leistung

Alle Redis-Daten befinden sich im Speicher, was niedrige Latenzzeiten und einen hohen Datendurchsatz ermöglicht. Im Gegensatz zu herkömmlichen Datenbanken müssen In-Memory-Datenspeicher nicht auf die Festplatte ausgelagert werden, was die Latenzzeit der Maschine auf Mikrosekunden reduziert. Aus diesem Grund können In-Memory-Datenspeicher um eine Größenordnung mehr Operationen und schnellere Antwortzeiten unterstützen. Daraus ergibt sich blitzschnelle Leistung für durchschnittliche Lese- oder Schreibvorgänge von unter einer Millisekunde und Unterstützung von Millionen Vorgängen pro Sekunde.

Flexible Datenstrukturen

Entgegen schematischen Schlüsselwert-Datenspeichern, die begrenzte Datenstrukturen anbieten, verfügt Redis über eine Vielzahl von Datenstrukturen, um Ihre individuellen Anwendungsanforderungen zu erfüllen. Redis unterstützt folgende Datentypen:

  • Zeichenfolgen – Text- oder Binärdaten mit einer Größe von bis zu 512 MB
  • Listen – mehrere Zeichenfolgen in der Reihenfolge ihrer Hinzufügung
  • Sätze – mehrere unsortierte Zeichenfolgen, die sich mit anderen Satzarten überschneiden, vereinen oder voneinander unterscheiden können
  • Sortierte Sets – nach Wert aufgelistete Sets
  • Hashes – eine Datenstruktur zum Speichern einer Liste mit Feldern und Werten
  • Bitmuster – ein Datentyp, der Vorgänge auf Bitebene ermöglicht
  • HyperLogLogs - eine probabilistische Datenstruktur zur Schätzung der eindeutigen Elemente in einem Datensatz
  • Streams - eine Protokolldatenstruktur-Nachrichtenwarteschlange
  • Geospatial - ein auf Längen- und Breitengraden basierender Eintrag für Karten, „in der Nähe“
  • JSON – ein verschachteltes, halbstrukturiertes Objekt mit benannten Werten, das Zahlen, Zeichenfolgen, Boolesche Werte, Arrays und andere Objekte unterstützt

Einfachheit und Benutzerfreundlichkeit

Redis ermöglicht es Ihnen, traditionell komplexen Code mit weniger und einfacheren Zeilen zu schreiben. Mit Redis schreiben Sie weniger Codezeilen, um Daten in Ihren Anwendungen zu speichern, darauf zuzugreifen und sie zu nutzen. Der Unterschied besteht darin, dass Entwickler, die Redis verwenden, eine einfache Befehlsstruktur verwenden können, im Gegensatz zu den Abfragesprachen herkömmlicher Datenbanken. Sie können zum Beispiel die Redis-Hash-Datenstruktur verwenden, um Daten mit nur einer Zeile Code in einen Datenspeicher zu verschieben. Ein ähnlicher Vorgang in einem Datenspeicher ohne Hash-Datenstrukturen würde zahlreiche Codezeilen erfordern, um eine Konvertierung von einem Format in ein anderes vorzunehmen. Redis verfügt über native Datenstrukturen sowie viele Möglichkeiten, um Ihre Daten zu bearbeiten und damit zu interagieren. Redis-Entwicklern stehen mehr als einhundert Open-Source-Clients zur Verfügung. Zu den unterstützten Sprachen gehören Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go und viele andere.

Replikation und Beständigkeit

Redis verwendet eine primäre Replikatarchitektur und unterstützt die asynchrone Replikation, bei der Daten auf mehrere Replikatserver repliziert werden können. Auf diese Weise können eine verbesserte Leseleistung, da Anforderungen auf Server verteilt werden können, und eine schnellere Wiederherstellung bereitgestellt werden, falls der primäre Server ausfallen sollte. Für Beständigkeit unterstützt Redis Zeitpunktsicherungen (der Redis-Datensatz wird auf eine Festplatte kopiert).

Redis wurde nicht als dauerhafte und konsistente Datenbank konzipiert. Wenn Sie eine langlebige, Redis-kompatible Datenbank benötigen, sollten Sie Amazon MemoryDB for Redis in Betracht ziehen. Da MemoryDB ein dauerhaftes Transaktionsprotokoll verwendet, das Daten über mehrere Availability Zones (AZs) hinweg speichert, können Sie es als primäre Datenbank verwenden. MemoryDB wurde speziell dafür entwickelt, dass Entwickler die Redis-API nutzen können, ohne sich um die Verwaltung eines separaten Cache, einer Datenbank oder der zugrunde liegenden Infrastruktur kümmern zu müssen.

Hohe Verfügbarkeit und Skalierbarkeit

Redis bietet eine primäre Replikatarchitektur auf einem einzelnen Primärknoten oder in einer Cluster-Topologie. So können Sie hochverfügbare Lösungen erstellen, die konsistente Leistung und Zuverlässigkeit ermöglichen. Wenn Sie die Cluster-Größe anpassen möchten, stehen Ihnen viele Möglichkeiten zur horizontalen und vertikalen Skalierung sowie zur horizontalen Herunterskalierung zur Verfügung. So kann Ihr Cluster mit Ihren Anforderungen wachsen.

Open Source

Redis ist ein Open-Source-Projekt, das von einer dynamischen Community unterstützt wird. Mit Redis bestehen keine Abhängigkeiten von Anbietern oder Technologie, da der Datenspeicher auf offenen Standards beruht, offene Datenformate unterstützt und über zahlreiche Clients verfügt.

Caching

Redis ist eine großartige Wahl für die Implementierung eines In-Memory-Caches mit hoher Verfügbarkeit, durch den sich die Latenz des Datenzugriffs reduziert, der Durchsatz erhöht und die Last für Ihre relationale oder NoSQL-Datenbank bzw. -Anwendung verringert. Redis kann häufig angeforderte Elemente mit Reaktionszeiten von unter einer Millisekunde verarbeiten. Außerdem können Sie problemlos für höhere Belastungen skalieren, ohne dass das kostspielige Backend größer wird. Das Caching von Ergebnissen aus Datenbankabfragen, durchgehenden Sitzungen, Webseiten und häufig verwendeter Elemente, wie Images, Dateien sowie Metadaten, sind beliebte Beispiele für Caching mit Redis.

Chat, Messaging und Warteschlangen

Redis unterstützt Pub/Sub mit einem Musterabgleich und einer Vielzahl von Datenstrukturen wie Listen, sortierten Sätzen und Hashes. Auf diese Weise kann Redis Chat-Räume, Echtzeit-Kommentar-Streams, Feeds in sozialen Medien sowie Server-Interkommunikation mit hoher Leistung unterstützen. Die Redis List-Datenstruktur vereinfacht das Implementieren einer benutzerfreundlichen Warteschlange. Listen bieten atomare Vorgänge und Blockierungsfunktionen, sodass sie sich für verschiedene Anwendungen eignen, die einen zuverlässigen Message Broker oder eine Kreisliste erfordern.

Spielebestenlisten

Redis ist eine beliebte Option unter Spieleentwicklern, die Echtzeit-Bestenlisten erstellen möchten. Verwenden Sie einfach die Redis Sorted Set-Datenstruktur, die Eindeutigkeit von Elementen bereitstellt und die nach Punkten von Benutzern sortierte Liste beibehält. Das Erstellen einer Echtzeit-Rangliste ist so einfach wie das Aktualisieren der Punkte eines Benutzers bei jeder Änderung. Sie können Sorted Sets auch verwenden, um Zeitreihendaten mithilfe von Zeitstempeln als Punkte zu verarbeiten.

Sitzungsspeicher

Redis ist ein In-Memory-Datenspeicher mit hoher Verfügbarkeit und Beständigkeit, der sich bei Anwendungsentwicklern großer Beliebtheit erfreut, da damit Sitzungsdaten für Anwendungen im Internet gespeichert und verwaltet werden können. Der Datenspeicher bietet Latenzen von unter einer Millisekunde, Skalierung und Ausfallsicherheit, die für die Verwaltung von Sitzungsdaten, wie Benutzerprofilen, Anmeldeinformationen, Sitzungsstatus sowie benutzerspezifischer Personalisierung, erforderlich sind.

Umfassendes Medien-Streaming

Redis bietet einen schnellen In-Memory-Datenspeicher für die Ausführung von Live-Streaming-Anwendungsfällen. Redis kann des Weiteren zum Speichern von Metadaten zu Benutzerprofilen und zum Anzeigeverlauf, der Authentifizierungsinformationen und -Token für Millionen Benutzer sowie von Manifestdateien verwendet werden, um Netzwerke zur Bereitstellung von Inhalten (Content Delivery Networks, CDNs) zum Streamen von Videos für Millionen Benutzer von Mobil- und Desktopgeräten gleichzeitig zu aktivieren.

Geodaten

Redis bietet speziell entwickelte In-Memory-Datenstrukturen und -Operatoren zum Verwalten von Echtzeit-Geodaten nach Maß und bei hoher Geschwindigkeit. Die Redis-Befehle, z. B. GEOADD, GEODIST, GEORADIUS und GEORADIUSBYMEMBER, zum Speichern, Verarbeiten und Analysieren von Geodaten in Echtzeit gestalten den Umgang mit Geodaten schnell und einfach. Sie können Redis verwenden, um Ihren Anwendungen standortbezogene Funktionen wie Fahrtzeit, Entfernung sowie Sehenswürdigkeiten hinzuzufügen.

Machine Learning

Moderne datengesteuerte Anwendungen erfordern Machine Learning, um schnell große Datenvolumen, -unterschiede und -geschwindigkeiten zu verarbeiten sowie die Entscheidungsfindung zu automatisieren. Für Anwendungsfälle, wie Betrugsermittlung in Spielen und Finanz-Services, bei der Echtzeit-Gebotsabgabe in Ad-Tech, der Kontaktvermittlung beim Dating und bei Mitfahrgelegenheiten, ist die Fähigkeit, Live-Daten zu verarbeiten und Entscheidungen in unter einer Millisekunde zu treffen, von größter Bedeutung. Redis bietet Ihnen einen schnellen In-Memory-Datenspeicher zum zügigen Erstellen, Schulen und Bereitstellen von Machine-Learning-Modellen.

Echtzeitanalysen

Redis kann in Kombination mit anderen Streaming-Lösungen, wie Apache Kafka und Amazon Kinesis, als In-Memory-Datenspeicher eingesetzt werden, um Echtzeitdaten einzulesen und mit einer Latenz von unter einer Millisekunde zu verarbeiten und zu analysieren. Redis ist die ideale Wahl für Anwendungsfälle mit Echtzeitanalysen wie Analysen in sozialen Medien, gezielte Anzeigenschaltung, Personalisierung und IoT.

Redis-Sprachunterstützung

Redis unterstützt die meisten führenden Programmiersprachen und -protokolle, einschließlich:

Python

Java

PHP

Redis vs. Memcached

Sowohl Redis als auch MemCached sind Open-source-In-Memory-Datenspeicher. Memcached, ein leistungsstarker verteilter Speicher-Cache-Service, ist auf Einfachheit ausgelegt, während Redis eine Reihe von Funktionen bietet, die für eine Vielzahl von Anwendungsmöglichkeiten geeignet sind. Für einen detaillierteren Vergleich der Funktionen, der Ihnen bei der Entscheidung hilft, sehen Sie sich Folgendes an: Vergleichen von Redis und Memcached. Sie arbeiten zur besseren Leistungssteigerung mit relationalen oder Schlüssel-Werte-Datenbanken, wie MySQL, Postgres, Aurora, Oracle, SQL Server, DynamoDB und weiteren.

Redis auf AWS verwenden

AWS bietet zwei vollständig verwaltete Services, die mit Redis kompatibel sind: Amazon MemoryDB for Redis und Amazon ElastiCache for Redis.

Amazon MemoryDB for Redis

Amazon MemoryDB for Redis ist ein Redis-kompatibler, langlebiger In-Memory-Datenbank-Service, der eine extrem schnelle Leistung bietet. Es wurde speziell für moderne Anwendungen entwickelt, die mit Microservices-Architekturen erstellt wurden. Amazon MemoryDB speichert Daten dauerhaft über mehrere Availability Zones (AZs) hinweg und verwendet ein Multi-AZ-Transaktionsprotokoll, um schnelles Failover, Datenbankwiederherstellung und Knotenneustarts zu ermöglichen. Mit Amazon MemoryDB werden alle Ihre Daten im Speicher gespeichert, wodurch Sie eine Lese-Latenzzeit von Mikrosekunden und eine Schreib-Latenz im einstelligen Millisekundenbereich sowie einen hohen Durchsatz erreichen. 

Weitere Informationen zu Amazon MemoryDB for Redis finden Sie in der MemoryDB-Dokumentation.

Amazon ElastiCache for Redis

Amazon ElastiCache for Redis ist ein vollständig verwalteter Caching-Service, der die Einrichtung, den Betrieb und die Skalierung eines Cache in der Cloud vereinfacht. Mit ElastiCache für Redis können Sie die Anwendungsgeschwindigkeit beschleunigen und Lese- und Schreiblatenzen im Mikrosekundenbereich beseitigen, indem Sie Daten aus primären Datenbanken und Datenspeichern zwischenspeichern. ElastiCache für Redis ist für eine kostenlose Testversion mit dem kostenlosen Kontingent von AWS verfügbar. 

Amazon Elasticache for Redis

Registrieren

Erhalten Sie Zugang zu Amazon MemoryDB und Amazon ElastiCache.
Lernen Sie Amazon Elasticache for Redis kennen

Erste Schritte mit Amazon ElastiCache

Erfahren Sie, wie Sie einen Amazon-ElastiCache-for-Redis-Cluster erstellen.
Erste Schritte mit ElastiCache for Redis

Beginnen Sie mit dem Erstellen mit Amazon MemoryDB

Beginnen Sie die Erstellung mithilfe des Benutzerhandbuchs.