Erste Schritte mit Redis und PHP zur schnellen Datenspeicherung

Die beliebte Redis-Speicher-Engine ist ein hervorragendes und unverzichtbares Werkzeug im Arsenal eines jeden Softwareentwicklers. Die In-Memory-Speicher-Engine ermöglicht ein blitzschnelles Speichern und Abrufen von Daten mit bis zu beeindruckenden 32 Millionen Abfragen pro Sekunde und ist damit eine hervorragende Ergänzung zu jeder wichtigen Datenbank-Engine.

Lassen Sie uns eintauchen und lernen, wie wir unseren Online-Betrieb beschleunigen können.

Redis: Vor- und Nachteile

Der größte Vorteil von Redis besteht darin, dass es sich um einen rein speicherinternen Datenspeicher handelt. Dies bedeutet, dass er blitzschnell ist, da die Datenbank im RAM gespeichert ist und daher keine Datei-E / A-Vorgänge auf der Festplatte erforderlich sind.

Weitere zusätzliche Vorteile sind die Einfachheit, die Clusterunterstützung über Redis-Cluster sowie die Unterstützung von acht verschiedenen Datentypen, die Ihnen die Flexibilität bieten, Ihre Daten nach Bedarf zu speichern und zu verwalten.

Der größte Nachteil ist jedoch auch die Tatsache, dass es sich lediglich um einen speicherinternen Datenspeicher handelt und daher mit Größenbeschränkungen verbunden ist. Dies hängt von Ihrer Serverinfrastruktur ab. Aus Gründen dieses Artikels und der Einfachheit enthält Ihre typische Redis-Datenbank jedoch nur maximal 2 bis 4 GB Daten.

Dies bedeutet, dass Redis als Ergänzung zu den häufig verwendeten Datenbank-Engines wie mySQL, PostgreSQL und MongoDB verwendet wird und nicht als Ersatz gedacht ist. Zu den Hauptanwendungen von Redis gehören ein Cache, temporäre / aktuelle 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 Linux-Distribution aus, die den Befehl apt-get enthält, führen Sie zur Installation von Redis einfach den folgenden Befehl im Terminal aus:

 sudo apt-get install redis-server

Überprüfen Sie anschließend, ob Redis erfolgreich installiert wurde. Führen Sie im Terminal den folgenden Befehl aus:

 redis-cli --version

Dies sollte die Version von Redis drucken, die Sie ausführen, und unter der Annahme, dass dies der Fall ist, den folgenden Befehl ausführen, 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 gekennzeichnet, bei dem es sich um eine beliebige Nicht-Leerzeichen-Zeichenfolge handeln kann. Zeichenfolgen enthalten nur einen einzelnen Wert. Führen Sie beispielsweise die folgenden Befehle an der Redis-Eingabeaufforderung aus, um einen Wert auf 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 alle Schlüssel in der Redis-Datenbank mit dem Befehl keys auflisten.

 127.0.0.1:6379> keys *

Dies führt dazu, dass die beiden zuvor festgelegten Schlüssel, vollständiger Name und Einheiten , angezeigt werden . 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 Ganzzahl mit dem Befehl hincrby schnell zu erhöhen . Im Folgenden wird die Taste "Einheiten" von 5 auf 7 erhöht.

 127.0.0.1:6379> incrby units 2

Befehle auflisten

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 dem obigen Beispiel entnehmen können, können Sie innerhalb eines einzigen Befehls mehrere Elemente in eine Liste verschieben. Mit dem Befehl lrange können wir jetzt alle Elemente in der Liste anzeigen .

 127.0.0.1:6379> lrange colors 0 -1

Am Ende des Befehls befinden sich zwei Ganzzahlen, die erste definiert die Position innerhalb der Liste, an der begonnen werden soll, und die zweite gibt die Anzahl der zurückzugebenden Elemente an, wobei -1 alle Elemente bedeutet. Das Ergebnis des obigen Befehls ist blau, rot, gelb, grün .

Sie können Elemente auch mit den Befehlen lpop und rpop von beiden Enden einer Liste entfernen .

 127.0.0.1:6379> lpop colors
blue
127.0.0.1:6379> rpop colors
green

Mit dem Befehl llen können Sie auch die Anzahl der Elemente in einer Liste abrufen .

 127.0.0.1:6379> llen colors
(integer) 2

Zuletzt können Sie ein Element mit dem Befehl lrem 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 noch nicht vorhanden sein, und Sie definieren Schlüssel-Wert-Paare jederzeit mit dem Befehl hset .

 127.0.0.1:6379> hset user:581 full_name "Jane Doe"
127.0.0.1:6379> hset user:581 points 500

Mit dem Befehl hmset können Sie auch mehrere Schlüssel-Wert-Paare eines Hashs in einem einzigen Befehl definieren .

 127.0.0.1:6379> hmset user:581 email [email protected] gender F

Der vom Schlüsselbenutzer identifizierte Hash : 581 verfügt nun über insgesamt vier Schlüssel-Wert-Paare, die alle mit dem Befehl hgetall leicht 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]"

Für alle Ganzzahlen innerhalb des Hashs können Sie sie mit dem Befehl code hincrby um einen bestimmten Betrag erhöhen .

 127.0.0.1:6379> hincrby user:581 points 20
(integer) 520

Der Wert der Punkte innerhalb des Hash – Schlüssel ist nun von 20 bis 520. Ein einzelner Schlüssel-Wert – Paar in einem Hash inkrementiert wurde mit dem HDEL Befehl gelöscht werden.

 127.0.0.1:6379> hdel user:581 gender

Alternativ können Sie mit dem Befehl del auch einen Hash löschen, der alle Schlüssel-Wert-Paare vollständig enthält.

 127.0.0.1:6379> del user:581

Redis Keys laufen ab

Eine weitere hervorragende Funktion von Redis ist die Möglichkeit, Schlüssel nach einer festgelegten Anzahl von Sekunden mit dem Befehl expire automatisch abzulaufen. Bitte beachten Sie, dass Sie möglicherweise nur vollständige Schlüssel und keine einzelnen Elemente in einer Liste oder einem Hash ablaufen lassen. Zum Beispiel:

 127.0.0.1:6379> expire full_name 10

Dadurch wird eine Ablaufzeit von 10 Sekunden für den im Abschnitt "Zeichenfolgen" erstellten Schlüssel " full_name" festgelegt . Warten Sie nach dem Ausführen des obigen Befehls 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 jetzt abgelaufen, daher erhalten wir als Ergebnis null.

Stellen Sie mit PHP eine Verbindung zu Redis her

Nachdem Sie die Grundlagen zum Speichern und Abrufen von Daten mit Redis gelernt haben, ist es an der Zeit, diese 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 den Befehl im Terminal 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 ein PHP-Code, der eine Verbindung zu Redis herstellt und mit diesem verbunden ist.

 <?php
// 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 recht einfach sein. Zuerst wird eine Verbindung zu Redis mit einer Zeitüberschreitung von 5 Sekunden hergestellt, dann wird ein String und ein Hash festgelegt und abgerufen. Alle Redis-Befehle können über OOP ausgeführt werden, indem sie wie oben beschrieben direkt vom Redis-Objekt aufgerufen werden.

Du bist auf dem Weg!

Herzlichen Glückwunsch, Sie haben die Grundlagen zum Speichern und Abrufen von Daten mit rasanter Geschwindigkeit über die Redis-Speicher-Engine gelernt, einschließlich der Verbindung zu und der Verbindung mit Redis mithilfe von PHP.

Bitte beachten Sie, dass dieser Artikel nur die Grundlagen behandelt. Auf der Seite Redis-Datentypen der Dokumentation können Sie Redis und all seine Funktionen weiter erkunden.