Redis, kurz für Remote Dictionary Server, ist ein BSD-lizenzierter Open-Source-In-Memory-Key-Value-Datenstrukturspeicher, der von Salvatore Sanfillipo in C-Sprache geschrieben und erstmals am 10. Mai 2009 veröffentlicht wurde. Je nach Konfiguration , kann Redis wie eine Datenbank, ein Cache oder ein Nachrichtenbroker agieren. Es ist wichtig zu beachten, dass Redis ein NoSQL-Datenbanksystem ist. Dies impliziert, dass Redis im Gegensatz zu SQL (Structured Query Language)-gesteuerten Datenbanksystemen wie MySQL, PostgreSQL und Oracle keine Daten in wohldefinierten Datenbankschemata speichert, die Tabellen, Zeilen und Spalten bilden. Stattdessen speichert Redis Daten in Datenstrukturen, was die Verwendung sehr flexibel macht. Mit dem Hosting von ScaleGrid für Redis™* können Sie Ihre zeitaufwändigen Vorgänge für eine Vielzahl unterschiedlicher Redis-Anwendungsfälle automatisieren. In diesem Blog skizzieren wir die wichtigsten Redis-Anwendungsfälle nach den verschiedenen Kerndatenstrukturtypen.
Datenstrukturen in Redis
Werfen wir einen Blick auf einige der Datentypen, die Redis unterstützt. In Redis haben wir Strings, Listen, Sets, sortierte Sets und Hashes, die wir in diesem Artikel behandeln werden. Darüber hinaus haben wir andere Datentypen wie Bitmaps, Hyperloglogs und Geodaten-Indizes mit Radiusabfragen und Streams. Während es einige Redis-GUI-Tools gibt, die von der Redis-Community geschrieben wurden, ist die Befehlszeile bei weitem der wichtigste Client, im Gegensatz zu gängigen SQL-Datenbankbenutzern, die häufig GUI-Verwaltungssysteme bevorzugen, z. B. phpMyAdmin für MySQL und PgAdmin für PostgreSQL.
Lassen Sie uns einen genaueren Blick auf die Datentypen werfen, die in Redis existieren.
Redis-Strings
Redis-Strings sind die grundlegendste Art von Redis-Werten, die von allen anderen Datenstrukturtypen genutzt werden, und sind Strings in anderen Programmiersprachen wie Java oder Python ziemlich ähnlich. Zeichenfolgen, die beliebige Datentypen enthalten können, gelten als binärsicher und haben eine maximale Länge von 512 MB. Hier sind ein paar nützliche Befehle für Redis-Strings:
Zum Speichern einer Zeichenfolge „John “ unter einem Schlüssel wie „Schüler“ Führen Sie in Redis den folgenden Befehl aus:
SET „student“ „john“
Um die Zeichenfolge abzurufen, verwenden Sie den GET-Befehl wie gezeigt:
GET „student“
Um die im Schlüssel enthaltene Zeichenfolge zu löschen, verwenden Sie den DEL-Befehl:
DEL „Schüler“
Anwendungsfälle für Redis Strings
- Sitzungscache: Viele Websites nutzen Redis Strings, um einen Sitzungs-Cache zu erstellen, um ihre Website-Erfahrung zu beschleunigen, indem HTML-Fragmente oder -Seiten zwischengespeichert werden. Da Daten temporär im RAM gespeichert werden, macht dieses Attribut Redis zur perfekten Wahl als Session-Cache. Es ist in der Lage, benutzerspezifische Daten, z. B. Artikel, die in einem Warenkorb in einem Online-Shop gespeichert sind, vorübergehend zu speichern, was entscheidend ist, damit Ihre Benutzer ihre Daten nicht verlieren, falls sie sich abmelden oder die Verbindung verlieren.
- Warteschlangen: Jede Anwendung, die sich mit Verkehrsstaus, Messaging, Datenerfassung, Auftragsverwaltung oder Packer-Routing befasst, sollte eine Redis-Warteschlange in Betracht ziehen, da dies Ihnen helfen kann, Ihre Warteschlangengröße nach Ankunfts- und Abfahrtsrate für die Ressourcenverteilung zu verwalten.
- Nutzung und Abrechnung nach Verbrauch: Ein weniger bekannter Anwendungsfall für Redis Strings ist die Echtzeitmessung für verbrauchsbasierte Preismodelle. Auf diese Weise können SaaS-Plattformen, die auf der Grundlage der tatsächlichen Nutzung abrechnen, die Aktivitäten ihrer Kunden messen, z. B. in der Telekommunikationsbranche, wo sie möglicherweise SMS oder Minuten in Rechnung stellen.
Redis-Listen
Listen enthalten Zeichenfolgen, die nach ihrer Einfügereihenfolge sortiert sind. Mit Redis-Listen können Sie Elemente zum Kopf oder Ende der Listen hinzufügen, was sehr nützlich ist, um Jobs in die Warteschlange zu stellen. Wenn dringendere Jobs ausgeführt werden müssen, können diese vor andere Jobs mit niedrigerer Priorität in die Warteschlange gestellt werden. Wir würden den LPUSH-Befehl verwenden, um ein Element am Anfang oder links von der Zeichenfolge einzufügen, und den RPUSH-Befehl, um am Ende oder rechts von unserer Zeichenfolge einzufügen. Sehen wir uns ein Beispiel an:
LPUSH list x # jetzt ist die Liste "x"
LPUSH list y # jetzt ist die Liste "y","x"
RPUSH list z # jetzt ist die Liste "y","x","z" (Beachten Sie, wie das ‚z‘-Element durch den RPUSH-Befehl am Ende der Liste hinzugefügt wurde)
Anwendungsfälle der Redis-Liste
- Soziale Netzwerke: Soziale Plattformen wie Twitter verwenden Redis-Listen, um ihre Timelines oder Homepage-Feeds zu füllen, und können den oberen Teil ihrer Feeds mit trendigen Tweets oder Geschichten anpassen.
- RSS-Feeds: Erstellen Sie Nachrichten-Feeds aus benutzerdefinierten Quellen, aus denen Sie die neuesten Updates abrufen können, und ermöglichen Sie interessierten Followern, Ihren RSS-Feed zu abonnieren.
- Bestenlisten: Foren wie Reddit und andere Abstimmungsplattformen nutzen Redis-Listen, um Artikel zur Bestenliste hinzuzufügen und nach Einträgen mit den meisten Stimmen zu sortieren.
Erfahren Sie in unserem Blogbeitrag zum Caching von Tweets mit Node.js, Redis und Socket.io, wie Sie Ihren eigenen Twitter-Feed erstellen.
Die wichtigsten #Redis-Anwendungsfälle nach KerndatenstrukturtypenClick To TweetRedis-Sets
Redis Sets sind leistungsstarke Datentypen, die leistungsstarke Operationen wie Schnittmengen und Vereinigungen unterstützen. Sie sind in keiner Reihenfolge und werden normalerweise verwendet, wenn Sie eine Prüfung durchführen und Beziehungen zwischen verschiedenen Variablen sehen möchten. Sets sind ziemlich schnell, und unabhängig von der Anzahl der gespeicherten Elemente dauert es genauso lange, Elemente in einem Set hinzuzufügen oder zu entfernen. Darüber hinaus lassen Sätze keine doppelten Schlüssel oder doppelten Mitglieder zu, sodass ein Schlüssel, der mehrmals in einem Satz hinzugefügt wird, einfach ignoriert wird. Dies wird durch eine Funktion namens SADD gesteuert, die die Duplizierung mehrerer ähnlicher Einträge vermeidet. Das SADD-Attribut kann verwendet werden, wenn eindeutige Werte überprüft werden, und kann auch zum Planen von Jobs, die im Hintergrund ausgeführt werden, einschließlich Cron-Jobs, die automatisierte Skripte sind, verwendet werden.
Diese sind besonders hilfreich, um das Kundenverhalten für Ihre Online-Shopping-Site in Echtzeit zu analysieren. Wenn Sie beispielsweise ein Online-Bekleidungsgeschäft betreiben, verwendet Redis Sorted Sets Beziehungsabgleichstechniken wie Vereinigungen, Schnittmengen und Subtraktionen (üblicherweise in Venn-Diagrammen angewendet), um ein genaues Bild des Kundenverhaltens zu vermitteln. Sie können Daten zu Einkaufsmustern zwischen den Geschlechtern abrufen, welche Kleidungsprodukte sich am meisten verkaufen und zu welchen Zeiten die höchsten Verkäufe verzeichnet werden.
Redis legt Anwendungsfälle fest
- E-Commerce-Verkäufe analysieren: Viele Online-Shops verwenden Redis Sets, um das Kundenverhalten zu analysieren, z. B. Suchen oder Käufe für eine bestimmte Produktkategorie oder Unterkategorie. Beispielsweise kann ein Online-Buchhändler herausfinden, wie viele Kunden medizinische Bücher in Psychologie gekauft haben.
- IP-Adressverfolgung: Redis Sets sind ein großartiges Tool für Entwickler, die alle IP-Adressen analysieren möchten, die eine bestimmte Website-Seite oder einen Blog-Beitrag besucht haben, und mit ihrer SADD-Funktion alle Duplikate für eindeutige Besucher ignorieren möchten.
- Filterung unangemessener Inhalte: Für jede App, die Benutzereingaben sammelt, ist es eine gute Idee, eine Inhaltsfilterung für unangemessene Wörter zu implementieren, und Sie können dies mit Redis Sets tun, indem Sie Wörter, die Sie filtern möchten, zu einer SET-Taste und dem SADD-Befehl hinzufügen.
Sortierte Sätze
Wie der Name schon sagt, sind Redis Sorted Sets eine Sammlung von Strings, die Ihren Elementen eine Reihenfolge zuweisen, und sind eine der fortschrittlichsten Datenstrukturen in Redis. Diese ähneln Redis-Sets, nur dass Sets keine Reihenfolge haben, während sortierte Sets jedem Mitglied eine Punktzahl zuordnen. Sorted Sets sind dafür bekannt, sehr schnell zu sein, da Sie geordnete Listen und Zugriffselemente in kürzester Zeit zurückgeben können.
Redis Sorted Sets Use Cases
- Plattformen für Fragen und Antworten: Viele Q&A-Plattformen wie Stack Overflow und Quora verwenden Redis Sorted Sets, um die am besten bewerteten Antworten für jede vorgeschlagene Frage zu ordnen, um sicherzustellen, dass die qualitativ hochwertigsten Inhalte oben auf der Seite aufgelistet werden.
- Gaming-App-Anzeigetafeln: Online-Gaming-Apps nutzen Redis Sorted Sets, um ihre Highscore-Listen zu verwalten, da Partituren wiederholt werden können, die Zeichenfolgen, die die eindeutigen Benutzerdetails enthalten, jedoch nicht.
- Aufgabenplanungsdienst: Redis Sorted Sets sind ein großartiges Tool für einen Aufgabenplanungsdienst, da Sie eine Punktzahl zuweisen können, um die Priorität einer Aufgabe in Ihrer Warteschlange einzustufen. Für jede Aufgabe, für die keine Punktzahl notiert ist, können Sie die GEWICHTE-Option auf einen Standardwert von 1 setzen.
- Geo-Hashing: Die Geo-Indizierungs-API von Redis verwendet einen sortierten Satz für die Geo-Hash-Technik, mit der Sie Standorte basierend auf Breiten- und Längengrad indizieren können, wodurch mehrdimensionale Daten in lineare Daten umgewandelt werden.
Redis-Hashes
Redis-Hashes sind Zuordnungen zwischen String-Feldern und String-Werten. Dies ist der bevorzugte Datentyp, wenn Sie im Wesentlichen einen Container mit eindeutigen Feldern und ihren Werten erstellen müssen, um Objekte darzustellen. Mit Hashes können Sie eine anständige Menge an Feldern speichern, bis zu 232 – 1 Feld-Wert-Paare (mehr als 4 Milliarden), während Sie sehr wenig Platz beanspruchen. Sie sollten nach Möglichkeit Redis-Hashes verwenden, da Sie eine kleine Redis-Instanz zum Speichern von Millionen von Objekten verwenden können. Sie können grundlegende Hash-Befehlsoperationen wie get, set,exists zusätzlich zu vielen erweiterten Operationen verwenden.
Anwendungsfälle für Redis-Hashes
- Benutzerprofile: Viele Webanwendungen verwenden Redis-Hashes für ihre Benutzerprofile, da sie einen einzigen Hash für alle Benutzerfelder wie Name, Nachname, E-Mail, Passwort usw. verwenden können.
- Benutzerbeiträge: Soziale Plattformen wie Instagram nutzen Redis Hashes, um alle archivierten Benutzerfotos oder Beiträge einem einzelnen Benutzer zuzuordnen. Der Hash-Mechanismus ermöglicht es ihnen, Werte sehr schnell nachzuschlagen und zurückzugeben, die Daten in den Arbeitsspeicher einzupassen und die Datenpersistenz zu nutzen, falls einer ihrer Server ausfällt.
- Speichern von mandantenfähigen Metriken: Multi-Tenant-Anwendungen können Redis-Hashes nutzen, um ihre Produkt- und Verkaufsmetriken so aufzuzeichnen und zu speichern, dass eine solide Trennung zwischen jedem Mandanten gewährleistet ist, da Hashes effizient in einem sehr kleinen Speicherplatz codiert werden können.
Wer verwendet Redis?
Redis hat einen enormen Marktanteil in den Branchen Reise und Gastgewerbe, Community-Foren, soziale Medien, SaaS und E-Commerce, um nur einige zu nennen. Einige der führenden Unternehmen, die Redis verwenden, sind Pinterest, Uber, Slack, Airbnb, Twitter und Stack Overflow. Hier sind einige Statistiken zur Popularität von Redis heute:
- 4.107 Unternehmen gaben an, Redis auf StackShare zu verwenden
- 8.759 Entwickler gaben an, Redis auf StackShare zu verwenden
- 38.094 GitHub-Benutzer haben Redis markiert
- Platz 8 der Datenbank auf DB-Engines mit einer Punktzahl von 144,08