Redis Tutorial: Einführung in die In-Memory-Datenbank
Das Redis-Datenbanksystem hat in den letzten Jahren an Popularität gewonnen. Die Hauptattraktionen sind die Geschwindigkeit und Einfachheit der Datenbankstruktur: Die Daten werden direkt in den Hauptspeicher des Servers eingegeben, sodass sie viel schneller als in anderen Datenbanken abgerufen werden können. Dies macht es häufig als Webseiten-Cache verwendet, obwohl es auch von Messaging-Diensten für eine schnellere Kommunikation verwendet wird. In unserem Redis-Tutorial erfahren Sie, wie Sie Ihre eigene Redis-Datenbank installieren.
- Schritt 1: Installieren Sie Redis
- Schritt 2: Konfigurieren Sie Redis
- Schritt 3: Tickets erstellen
- Saiten
- Listen
- Sets
- Hashes
- Schritt 4: andere Optionen
Schritt 1: Installieren Sie Redis
Redis ist Open Source , dh Open Source, sodass jeder das System herunterladen, verwenden und bearbeiten kann.
Im Folgenden wird beschrieben, wie Redis unter Ubuntu installiert und konfiguriert wird. Dies kann jedoch auch unter Mac und Windows erfolgen. Wenn Sie Redis im Moment nur testen möchten, ohne es auf Ihrem Computer zu installieren, empfehlen wir die Online-Testumgebung Try Redis.
Der erste Schritt ist das Herunterladen von Redis . Dazu verwenden wir den Ubuntu-Paketmanager, den wir zuerst auf die neueste Version aktualisieren müssen.
sudo apt-get update sudo apt-get install redis-server
Eine andere Möglichkeit besteht darin, die Dateien von der offiziellen Redis-Website herunterzuladen. Wenn Sie diesem Pfad folgen, müssen Sie die Paketdateien manuell extrahieren, dann installieren und schließlich Redis starten:
redis-server
Um zu überprüfen , ob Redis richtig funktioniert, bieten wir die Start – Kommunikationsschnittstelle mit der Datenbank:
redis-cli
Die Schnittstelle sollte dann die IP-Adresse und den Port anzeigen, über den Redis ausgeführt wird, an den ein Test- Ping gesendet werden kann .
127.0.0.1:6397> ping PONG
Wenn Redis antwortet, wurde das Datenbanksystem erfolgreich installiert . Jetzt können Sie auch prüfen, ob Sie Text schreiben können.
127.0.0.1:6397> set test "OK!" 127.0.0.1:6397> get test "OK!"
Möchten Sie Redis auf Ihrem eigenen Server installieren? IONOS-Cloud-Server können auch für kleine Projekte skaliert werden.
Schritt 2: Konfigurieren Sie Redis
Redis wird zunächst mit der Standardkonfiguration installiert, die dann mit den entsprechenden Befehlen geändert werden kann.
127.0.0.1:6397> config get *
In der Liste der Einstellungen für die Konfiguration werden die Elementpaare in zwei Positionen untereinander unterteilt : Das Element dbfilename hat dann den Wert dump.rdb . Das Sternchen, mit dem wir die Liste geöffnet haben, dient als Platzhalter für eine bestimmte Einstellung in der Liste. Wenn nur eine Einstellung untersucht werden soll, wird das Sternchen durch den Namen des Elements ersetzt, wobei immer das an der ersten Position verwendet wird, das der Schlüssel für den entsprechenden Einstellungswert ist.
127.0.0.1:6397> config get dbfilename 1) "dbfilename" 2) "dump.rdb"
Verwenden Sie den Befehl set, um einen Eintrag in der Konfigurationsdatei zu ändern . Es kann zum Beispiel verwendet werden, um ein Passwort zu definieren:
127.0.0.1:6397> config set requirepass "password" OK
Wenn wir danach das Passwort mit dem Befehl get anfordern , werden wir aufgefordert, es zuerst einzugeben, schließlich haben wir ihm aus einem bestimmten Grund eines gegeben. Um es einzugeben, verwenden wir den Befehl auth und fragen dann den Eintrag in der Konfigurationsdatei ab, wie wir es gerade getan haben.
127.0.0.1:6397> auth "password" 127.0.0.1:6397> config get requirepass 1) "requirepass" 2) "password"
Es gibt mehr Möglichkeiten, Ihre Datenbank sicherer zu machen. Auf der offiziellen Redis-Website fassen die Entwickler diesbezüglich verschiedene Punkte zusammen.
Tatsächlich speichert Redis alle Daten im Hauptspeicher. Um eine Datenpersistenz zu erreichen, kann eine Kopie ( Snapchot ) der Datenbank auf der Festplatte gespeichert werden , die sich in der Datei dump.rdb befindet .
127.0.0.1:6397> save
Mit dem Befehl save wird eine Kopie manuell erstellt, sie kann jedoch auch automatisch geplant werden.
127.0.0.1:6397> save 60 10
In diesem Beispiel haben wir dem Befehl zwei Parameter zugewiesen: Jetzt wird alle 60 Sekunden eine Kopie erstellt, wenn in diesem Zeitintervall bereits 10 Änderungen vorgenommen wurden.
Der Befehl save wird jedoch nicht empfohlen, während das System ausgeführt wird, da er den Zugriff von Clients auf die Datenbank verhindert. In diesen Fällen ist bgsave bequemer , da der Vorgang im Hintergrund ausgeführt wird.
Neben der Möglichkeit, eine Kopie der Datenbank zu erstellen , gibt es auch den Dateimodus “Nur anhängen” , in dem Redis jede in einer Datei ausgeführte Aktion speichert. Dank dieser Datei konnten Sie bei einem unerwarteten Absturz des Servers herausfinden, was als letztes getan wurde. Um den AOF-Modus zu aktivieren, muss die Konfigurationsdatei geändert werden.
127.0.0.1:6397> config set appendonly yes
Wenn Ihre Daten maximale Sicherheit erfordern, sollten Sie den AOF-Modus aktivieren und zusätzlich Kopien erstellen reguläre Datenbank: Somit ist es für Sie praktisch unmöglich, Ihre Daten zu verlieren. Diese Prozesse verlangsamen jedoch die Leistung der Datenbank etwas.
Schritt 3: Tickets erstellen
Sobald Sie Redis konfiguriert haben, können Sie mit der Datenbank arbeiten. Hierfür stehen Ihnen verschiedene Arten von Daten und Befehlen zur Verfügung.
Saiten
Am einfachsten ist es, eine Zeichenfolge zu erstellen, dh eine Kette oder Folge von Elementen. Verwenden Sie dazu den Befehl set .
Es spielt keine Rolle, ob die Werte in Anführungszeichen gesetzt sind oder nicht. Um den Code besser lesbar zu machen, können Sie den Text in Anführungszeichen und die numerischen Werte ohne diese setzen.
127.0.0.1:6397> set foo "bar" 127.0.0.1:6397> set value 1
Wenn die Eingaben foo und value jetzt vom Befehl get angefordert werden , werden die entsprechenden Werte angezeigt.
127.0.0.1:6397> get foo "bar" 127.0.0.1:6397> get value "1"
Der Befehl zum Löschen eines Eintrags lautet del .
127.0.0.1:6397> del foo (integer) 1 127.0.0.1:6397> get foo (nil)
Wenn Sie nicht jedes Mal viele Einträge mit einer neuen Zeile erstellen möchten, können Sie die erweiterte Funktion mset verwenden . Um die Werte mehrerer Felder gleichzeitig anzufordern , gibt es auch den Befehl mget .
127.0.0.1:6397> mset foo1 "bar1" foo2 "bar2" foo3 "bar3" OK 127.0.0.1:6397> mget foo1 foo2 foo3 1) "bar1" 2) "bar2" 3) "bar3"
Listen
Mit Redis können Sie auch andere Datentypen verwenden. Einige der beliebtesten für die Arbeit mit der Datenbank sind beispielsweise Listen und Sets . Sie sind beide Wertesätze, aber während die Sätze keine bestimmte Reihenfolge haben, sind die Werte in den Listen nummeriert. Einträge können in einer Liste hinzugefügt, angefordert oder gelöscht werden.
127.0.0.1:6397> lpush mylist foo (integer) 1 127.0.0.1:6397> lpush mylist bar (integer) 2 127.0.0.1:6397> lrange mylist 0 10 1) "foo" 2) "bar" 127.0.0.1:6397> linsert mylist before "bar" "test" (integer) 3 127.0.0.1:6397> lrange mylist 0 10 1) "foo" 2) "test" 3) "bar" 127.0.0.1:6397> lrem mylist 0 foo (integer) 1 127.0.0.1:6397> lrange mylist 0 10 1) "test" 2) "bar"
In diesem Beispiel haben wir zuerst zwei Elemente zu einer Liste hinzugefügt ( lpush ) und dann angefordert, dass sie angezeigt werden. Der Befehl lrange gibt an, welches Segment angezeigt werden soll (hier 0 bis 10, es können jedoch auch negative Zahlen verwendet werden). Dann haben wir mit dem Befehl linsert einen neuen Wert vor einem vorhandenen hinzugefügt ( nachdem könnte auch verwendet werden ), mit dem wir die Nummerierung geändert haben. Mit dem Befehl lrem können Sie Einträge mit einem bestimmten Wert aus der Liste löschen.
Sets
Für Sets verwendet Redis andere Befehle, jedoch mit sehr ähnlichen Ergebnissen:
127.0.0.1:6397> sadd myset "foo" (integer) 1 127.0.0.1:6397> sadd myset "bar" (integer) 1 127.0.0.1:6397> smembers myset 1) "bar" 2) "foo" 127.0.0.1:6397> sismember myset "bar" (integer) 1 127.0.0.1:6397> srem myset "bar" (integer) 1 127.0.0.1:6397> smembers myset 1) "foo"
Mit dem Befehl sadd können auch mehrere Elemente in die Menge integriert werden , indem sie nacheinander in den Befehl eingegeben werden . Verwenden Sie zum Anzeigen des Sets einfach den Befehl smembers und den Namen des betreffenden Sets . Mit dem Befehl sismember können Sie auch nach einem bestimmten Eintrag suchen. Analog zur Liste können Sie mit srem einzelne Einträge löschen.
Redis bietet Benutzern jedoch auch die Möglichkeit, Sets in einem übersichtlichen Format zu verwenden.
127.0.0.1:6397> zadd mysortedset 1 "foo" (integer) 1 127.0.0.1:6397> zadd mysortedset 2 "bar" (integer) 1 127.0.0.1:6397> zadd mysortedset 2 "foobar" (integer) 1 127.0.0.1:6397> zrange mysortedset 0 10 1) "foo" 2) "bar" 3) "foobar"
Um in diesem Fall verwendete Elemente hinzuzufügen, geben Sie den Befehl Zadd und score oder score ein. Während die Werte selbst nicht mehr als einmal angezeigt werden können , kann mit einer Punktzahl derselbe Wert mehrmals angegeben werden. Die Punktzahl ist daher keine direkte Nummerierung innerhalb des Satzes , sondern eine Gewichtung, so dass alle Einträge mit Punktzahl oder Punktzahl 2 nach denen mit Punktzahl 1 erscheinen . Mit dem Befehl zrange können Sie alle oder die ausgewählten Elemente anzeigen.
Hashes
Eine besondere Art von Daten sind Hashes : einzelne Einträge, die aus mehreren Werten bestehen, ähnlich wie Mengen und Listen, bei denen jedoch jeder Wert von einem Schlüssel begleitet wird, wodurch sogenannte Schlüssel-Wert- oder Schlüssel-Wert- Paare gebildet werden. .
127.0.0.1:6397> hset user1 name "bob" email "[email protected]" password "rK87_x" OK 127.0.0.1:6397> hget user1 name 1) "bob" 127.0.0.1:6397> hgetall user1 1) "name" 2) "bob" 3) "email" 4) "[email protected]" 5) "password" 6) "rK87_x" 127.0.0.1:6397> hvals user1 1) "bob" 2) "[email protected]" 3) "rK87_x" 127.0.0.1:6397> hkeys user1 1) "name" 2) "email" 3) "password" > hdel user1 password (integer) 1 127.0.0.1:6397> hgetall user1 1) "name" 2) "bob" 3) "email" 4) "[email protected]" 127.0.0.1:6397> del user1 (integer) 1 127.0.0.1:6397> hgetall user1 (empty list or set)
In diesem Beispiel haben wir hset verwendet , um einen Hash mit dem Namen user1 und drei Feldern zu erstellen . Über den Befehl hget können wir den Wert jedes Feldes anfordern. Um alle anzuzeigen , können Sie hgetall verwenden . Weitere Optionen zum Anzeigen von Werten sind hvals (zeigt alle im Hash gespeicherten Werte an ) und hkeys (zeigt alle im Hash gespeicherten Schlüssel an ). Mit hdel können Sie einzelne Werte löschen, während mit del , wie wir bereits gesehen haben, der gesamte Hash gelöscht wird .
Mit dem Befehl flushall werden alle Einträge aus der Datenbank gelöscht.
Schritt 4: andere Optionen
Mit Redis können Sie natürlich nicht nur Einträge in einer Datenbank erstellen, sondern den Daten auch bestimmte Eigenschaften zuweisen. In diesem Sinne können beispielsweise die Befehle zum Erhöhen und Verringern sehr nützlich sein .
127.0.0.1:6397> set foo 1 OK 127.0.0.1:6397> get foo "1" 127.0.0.1:6397> incr foo (integer) 2 127.0.0.1:6397> incr foo (integer) 3 127.0.0.1:6397> get foo "3" 127.0.0.1:6397> decr foo (integer) 2 127.0.0.1:6397> get foo "2"
Mit Hilfe dieser Funktionen können die Werte um eine Einheit erhöht oder verringert werden. Manchmal möchten Sie stattdessen Werte eingeben, die nur für eine bestimmte Zeit in der Datenbank verbleiben: Hierfür gibt es die Expire- Funktion .
127.0.0.1:6397> set foo "bar" OK 127.0.0.1:6397> expire foo 100 (integer) 1 127.0.0.1:6397> ttl foo (integer) 50 127.0.0.1:6397> ttl foo (integer) -50 127.0.0.1:6397> get foo (nil)
Der Befehl expire erfordert einen Zeitstempel in Sekunden. In diesem Beispiel haben wir entschieden, dass der Eintrag 100 Sekunden lang sein soll. Nach der Hälfte der Zeit verstrichen ist, haben wir die verwendet ttl Befehl aufzufordern , die Time-to-Live , dass die verbleibende Zeit. Wenn wir noch länger warten, wird die TTL ab dem Moment, in dem der Eintrag bereits verschwunden ist, negativ.
Mit dem Befehl setex können Sie einem Datenbankeintrag seit seiner Erstellung eine TTL zuweisen.
127.0.0.1:6397> setex foo 100 "bar" OK
Sobald ein Eintrag erstellt wurde, kann er erweitert werden: Der Befehl append fügt dem bereits vorhandenen einen weiteren Wert hinzu.
127.0.0.1:6397> set foo "Hello" OK 127.0.0.1:6397> append foo " World" (integer) 11 127.0.0.1:6397> get foo "Hello World" 127.0.0.1:6397> set bar 5 OK 127.0.0.1:6397> append bar 10 (integer) 3 127.0.0.1:6397> get bar "510"
Wie Sie sehen können, werden beim Anfordern der entsprechenden Werte die neuen Elemente einfach nach den bereits vorhandenen angezeigt . Wenn die betreffende Eingabe noch nicht vorhanden ist, führt append die gleiche Funktion wie set aus .
Darüber hinaus können die Eingaben auch mit dem Befehl umbenennen umbenannt werden .
127.0.0.1:6397> set foo 100 OK 127.0.0.1:6397> rename foo bar OK 127.0.0.1:6397> get foo (nil) 127.0.0.1:6397> get bar "100"
Es gibt viele andere Befehle, um mit Redis zu arbeiten. Details zu allen verfügbaren Befehlen finden Sie in der offiziellen Beschreibung.