Die beliebte Redis-Speicher-Engine ist ein hervorragendes und unverzichtbares Werkzeug im Arsenal jedes Softwareentwicklers. Die In-Memory-Speicher-Engine ermöglicht blitzschnelles Speichern und Abrufen von Daten mit bis zu beeindruckenden 32 Millionen Abfragen pro Sekunde, was sie zu einer erstklassigen Ergänzung zu allen wichtigen Datenbank-Engines macht.
Tauchen wir ein und erfahren Sie, wie Sie unseren Online-Betrieb beschleunigen können.
Redis: Vorteile vs. Nachteile
Der größte Vorteil von Redis besteht darin, dass es sich um einen reinen In-Memory-Datenspeicher handelt , was bedeutet, dass er unglaublich schnell ist, da die Datenbank im RAM gespeichert wird, sodass keine Datei-I/O-Operationen auf der Festplatte erforderlich sind.
Weitere zusätzliche Vorteile sind die Einfachheit, die Clustering-Unterstützung über Redis-Cluster sowie die Unterstützung für acht verschiedene Datentypen, die Ihnen die erforderliche Flexibilität zum Speichern und Verwalten Ihrer Daten nach Bedarf bieten.
Sein größter Nachteil ist jedoch auch die Tatsache, dass es sich um einen reinen In-Memory-Datenspeicher handelt, der daher Größenbeschränkungen unterliegt. Dies hängt von Ihrer Serverinfrastruktur ab, aber aus Gründen dieses Artikels und der Einfachheit wird Ihre typische Redis-Datenbank nur maximal 2-4 GB Daten enthalten.
Dies bedeutet, dass Redis verwendet wird, um die weit verbreiteten Datenbank-Engines wie mySQL, PostgreSQL und MongoDB zu ergänzen und nicht als Ersatz gedacht ist. Hauptverwendungszwecke für Redis sind ein Cache, temporäre/neue Daten, die in kurzer Zeit ablaufen, oder kleine Daten, auf die häufig zugegriffen wird.
So installieren Sie Redis
Angenommen, Sie führen Ubuntu oder eine andere Linux-Distribution aus, die den Befehl apt-get enthält , um Redis zu installieren, führen Sie einfach den folgenden Befehl im Terminal aus:
sudo apt-get install redis-server
Überprüfen Sie als Nächstes, ob Redis erfolgreich installiert wurde. Führen Sie im Terminal den Befehl aus:
redis-cli --version
Dies sollte die Version von Redis drucken, die Sie ausführen, und vorausgesetzt, führen Sie den folgenden Befehl aus, um eine Verbindung zu Redis herzustellen:
redis-cli
Dadurch erhalten Sie eine nicht standardmäßige Redis-Eingabeaufforderung im Terminal, die ungefähr so aussieht:
127.0.0.1:6379>
String-Befehle
Jeder Eintrag in Redis wird durch einen Schlüssel identifiziert, der eine beliebige Zeichenfolge ohne Leerzeichen sein kann. Zeichenfolgen enthalten nur einen einzelnen Wert und führen Sie beispielsweise die folgenden Befehle an der Redis-Eingabeaufforderung aus, um einen Wert für einige Schlüssel festzulegen.
127.0.0.1:6379> set full_name "John Doe" 127.0.0.1:6379> set units 5
Sie können jetzt mit dem Befehl keys alle Schlüssel auflisten, die sich derzeit in der Redis-Datenbank befinden.
127.0.0.1:6379> keys *
Dies führt zur Anzeige der beiden zuvor festgelegten Schlüssel, full_name und units . Sie können den Wert dieser Schlüssel mit dem Befehl get sehen.
127.0.0.1:6379> get full_name "John Doe" 127.0.0.1:6379> get units 5
Das Löschen von Schlüsseln kann einfach mit dem Befehl del erfolgen.
127.0.0.1:6379> del full_name
Es ist auch möglich, eine ganze Zahl mit dem Befehl hincrby schnell zu erhöhen . Im Folgenden wird die "Einheiten"-Taste von 5 auf 7 erhöht.
127.0.0.1:6379> incrby units 2
Listenbefehle
Listen in Redis sind eindimensionale Arrays mit einer bestimmten Reihenfolge und ermöglichen doppelte Elemente an verschiedenen Positionen der Liste. Mit den Befehlen lpush und rpush können Elemente links oder rechts von einer Liste hinzugefügt werden.
127.0.0.1:6379> lpush colors blue 127.0.0.1:6379> rpush colors red yellow green
Wie Sie im obigen Beispiel sehen können, können Sie innerhalb eines einzigen Befehls mehrere Elemente in eine Liste verschieben. Wir können jetzt alle Elemente in der Liste anzeigen, indem wir den Befehl lrange verwenden .
127.0.0.1:6379> lrange colors 0 -1
Am Ende des Befehls stehen zwei Ganzzahlen, die erste definiert die Position innerhalb der Liste, an der sie beginnen soll, und die zweite ist die Anzahl der zurückzugebenden Elemente, wobei -1 alle Elemente bedeutet. Das Ergebnis des obigen Befehls ist blau, rot, gelb, grün .
Sie können mit den Befehlen lpop und rpop auch Elemente von beiden Enden einer Liste entfernen .
127.0.0.1:6379> lpop colors blue 127.0.0.1:6379> rpop colors green
Sie können die Anzahl der Elemente in einer Liste auch mit dem Befehl llen abrufen .
127.0.0.1:6379> llen colors (integer) 2
Zuletzt können Sie mit dem Befehl lrem ein Element aus einer Liste entfernen .
127.0.0.1:6379> lrem colors 1 green (integer) 1
Der Befehl lrem beginnt mit dem Listennamen, gefolgt von der Anzahl der zu entfernenden Vorkommen und dem Namen des zu entfernenden Elements. Es wird die Anzahl der gefundenen und aus der Liste entfernten Vorkommen zurückgegeben.
Hash-Befehle
Einer der beliebtesten Datentypen in Redis sind Hashes, mit denen Sie mehrere Schlüssel-Wert-Paare in einem einzigen Eintrag speichern können. Der Schlüssel muss nicht bereits vorhanden sein, und Sie können jederzeit mit dem Befehl hset Schlüssel-Wert-Paare definieren .
127.0.0.1:6379> hset user:581 full_name "Jane Doe" 127.0.0.1:6379> hset user:581 points 500
Sie können mit dem Befehl hmset auch mehrere Schlüssel-Wert-Paare eines Hashs innerhalb eines einzigen Befehls definieren .
127.0.0.1:6379> hmset user:581 email [email protected] gender F
Der vom Key- User:581 identifizierte Hash hat nun insgesamt vier Schlüssel-Wert-Paare, die alle einfach mit dem Befehl hgetall abgerufen werden können .
127.0.0.1:6379> hgetall user:581 1) "full_name" 2) "Jane Doe" 3) "points" 4) "500" 5) "email" 6) "[email protected]" 7) "gender" 8) "F"
Sie können den Wert eines einzelnen Schlüssel-Wert-Paares innerhalb eines Hashs auch mit dem Befehl get abrufen.
127.0.0.1:6379> hget user:581 email "[email protected]"
Alle ganzen Zahlen innerhalb des Hashs können mit dem Befehl code hincrby um einen bestimmten Betrag erhöht werden .
127.0.0.1:6379> hincrby user:581 points 20 (integer) 520
Der Wert der Punkte Schlüssel innerhalb des Hash wird nun von 20 bis 520. Eines einzelnen Schlüssel-Wert - Paar in einem Hash inkrementiert wurde mit dem gelöscht werden kann HDEL - Befehl.
127.0.0.1:6379> hdel user:581 gender
Alternativ können Sie mit dem Befehl del auch einen Hash vollständig einschließlich aller Schlüssel-Wert-Paare löschen .
127.0.0.1:6379> del user:581
Ablaufende Redis-Schlüssel
Ein weiteres hervorragendes Feature von Redis ist die Möglichkeit, Schlüssel nach einer definierten Anzahl von Sekunden mit dem Expire- Befehl automatisch ablaufen zu lassen . Bitte beachten Sie, dass Sie nur vollständige Schlüssel und nicht einzelne Elemente innerhalb einer Liste oder eines Hashs ablaufen lassen dürfen. Zum Beispiel:
127.0.0.1:6379> expire full_name 10
Dadurch wird eine Ablaufzeit von 10 Sekunden für den Schlüssel full_name festgelegt, den Sie im Abschnitt "Strings" erstellt haben. Nachdem Sie den obigen Befehl ausgeführt haben, warten Sie 10 Sekunden und versuchen Sie dann erneut, den Wert des Schlüssels abzurufen.
127.0.0.1:6379> get full_name (nil)
Wie erwartet ist der Schlüssel nun abgelaufen, daher erhalten wir als Ergebnis null.
Verbinden Sie sich mit Redis mit PHP
Nachdem Sie nun die Grundlagen zum Speichern und Abrufen von Daten mit Redis kennengelernt haben, ist es an der Zeit, es mit Ihrer Software zu verbinden. Alle Programmiersprachen haben Module/Erweiterungen für Redis, aber für dieses Beispiel verwenden wir PHP.
Sie müssen zuerst die PHP-Redis-Erweiterung installieren, da sie nicht standardmäßig installiert ist. Führen Sie im Terminal den Befehl aus.
sudo apt-get install php-redis
Stellen Sie nach der Installation sicher, dass Sie PHP-fpm neu starten, damit die Erweiterung ordnungsgemäß geladen wird. Hier ist etwas PHP-Code, der eine Verbindung zu Redis herstellt und mit Redis interagiert.
<> // Connect to redis $conn = new redis(); try { $conn->connect('127.0.0.1', 6379, 5); } catch (RedisException $e) { die("Unable to connect to redis"); } // Set string $conn->set('country', 'Canada'); // Get string $value = $conn->get('country'); echo "Country is: $value "; // Define a profile $profile = [ 'username' => 'mike', 'full_name' => 'Mike Smith', 'email' => '[email protected]', 'country' => 'Australia' ]; // Create a hash $conn->hmset('user:188', $profile); // Get all values of the profile hash $values = $conn->hgetall('user:188'); print_r($values); // Get only the e-mail address $email = $conn->hget('user:188', 'email'); echo "E-mail is: $email "; // Expire the hash in 15 seconds $conn->expire('user:188', 15);
Der obige Beispielcode sollte ziemlich einfach sein. Es verbindet sich zuerst mit einem Timeout von 5 Sekunden mit Redis und fährt dann mit dem Festlegen und Abrufen einer Zeichenfolge und eines Hashs fort. Alle Redis-Befehle können über OOP ausgeführt werden, indem sie wie oben beschrieben direkt aus dem Redis-Objekt aufgerufen werden.
Sie sind auf dem Weg!
Herzlichen Glückwunsch, Sie haben die Grundlagen zum Speichern und Abrufen von Daten mit atemberaubender Geschwindigkeit über die Redis-Speicher-Engine gelernt, einschließlich der Verbindung und Schnittstelle zu Redis mithilfe von PHP.
Bitte beachten Sie, dass dieser Artikel nur die Grundlagen behandelt und die Seite Redis-Datentypen der Dokumentation ein großartiger Ort ist, um Redis und alle seine Funktionen weiter zu erkunden.