Linux-Installation Redis-Anfänger-Tutorial PHP-Cache-Tool Redis detaillierte Erklärung

Redis ist eine der beliebtesten NoSQL-Datenbanken. Es handelt sich um eine Open-Source-, speicherbasierte und optional persistente Schlüssel-Wert-Paar-Speicherdatenbank in ANSI C.

Installieren Sie Redis unter Linux, um den PHP-Zugriff zu beschleunigen

Was kann ich tun, wenn die Zugriffsgeschwindigkeit auf PHP-Websites langsam ist? Viele Nutzer nutzen WordPress zum Erstellen von Websites. WordPress ist ein umfangreiches Blog-Programm, das auf PHP basiert. Wie lässt sich die Zugriffsgeschwindigkeit von WordPress-Websites verbessern? Dazu installieren Sie das serverseitige Cache-Tool Redis. Im Folgenden finden Sie eine detaillierte Erklärung zu Redis und seiner Installation unter Linux.

PHP-Caching-Tool Redis

Redis ist am beliebtestenErstens: In den Anfängen der Webanwendungsentwicklung fanden relationale Datenbanken breite Beachtung und wurden häufig eingesetzt, da Websites damals nur wenige Zugriffe, Parallelität und Interaktionen aufwiesen. Später, mit zunehmendem Datenverkehr, traten bei Websites mit relationalen Datenbanken Leistungsengpässe auf, die in der Regel bei den Festplatten-E/A-Vorgängen vorlagen. Mit der Weiterentwicklung der Internettechnologie entstanden in einem endlosen Strom unterschiedlichster Anwendungstypen, was im heutigen Zeitalter von Cloud Computing und Big Data zu höheren Leistungsanforderungen führt, die sich hauptsächlich in den folgenden vier Aspekten widerspiegeln:

  1. Geringe Latenz beim Lesen und Schreiben: Schnelle Anwendungsreaktionen können die Benutzerzufriedenheit erheblich steigern
  2. Unterstützung enormer Datenmengen und großen Datenverkehrs: Für große Anwendungen wie Suchvorgänge ist die Verwendung von Daten auf PB-Ebene und die Fähigkeit, Millionen von Datenverkehr zu verarbeiten, erforderlich.
  3. Verwaltung großer Cluster: Systemadministratoren hoffen, dass verteilte Anwendungen einfacher bereitgestellt und verwaltet werden können.
  4. Berücksichtigung enormer Betriebskosten: IT-Abteilungen hoffen, die Hardware-, Software- und Arbeitskosten deutlich zu senken.

Um dieses Problem zu lösen, wurde NoSQL entwickelt. Es bietet die Vorteile hoher Leistung, starker Skalierbarkeit und hoher Verfügbarkeit und wird von einer breiten Palette von Entwicklern und Lagerverwaltern bevorzugt.

Was ist Redis

Redis ist eine der beliebtesten NoSQL-Datenbanken. Es handelt sich um eine Open-Source-, speicherbasierte und optional persistente Schlüssel-Wert-Paar-Speicherdatenbank in ANSI C. Sie enthält mehrere Datenstrukturen und unterstützt Netzwerke. Sie bietet folgende Funktionen:

  • Basierend auf Speicherbetrieb, hohe Leistung
  • Unterstützt die Verteilung und kann theoretisch unendlich erweitert werden
  • Schlüssel-Wert-Speichersystem
  • Open Source, geschrieben in ANSI C, kompatibel mit dem BSD-Protokoll, unterstützt das Netzwerk, kann auf Speicher oder persistentem Protokolltyp basieren, verfügt über eine Schlüssel-Wert-Datenbank und bietet API in mehreren Sprachen

Im Vergleich zu anderen Datenbanktypen weist Redis die folgenden Eigenschaften auf:

  • C/S-Kommunikationsmodell
  • Einzelprozess-Einzelthreadmodell
  • Umfangreiche Datentypen
  • Die Operation ist atomar
  • Beharrlichkeit
  • Hohe gleichzeitige Lese- und Schreibgeschwindigkeit
  • Unterstützt Lua-Skripte

Welche großen Unternehmen verwenden Redis?

Was sind die Anwendungsszenarien von Redis?

Zu den Anwendungsszenarien von Redis gehören: Caching-Systeme („heiße“ Daten: hochfrequente Lesevorgänge, niedrigfrequente Schreibvorgänge), Zähler, Nachrichtenwarteschlangensysteme, Rankings, soziale Netzwerke und Echtzeitsysteme.

Was ist Redis?

Redis-Datentypen und Hauptfunktionen

Die von Redis bereitgestellten Datentypen sind hauptsächlich in fünf integrierte Typen und einen benutzerdefinierten Typ unterteilt. Diese fünf integrierten Typen umfassen: Zeichenfolgentyp, Hash-Typ, Listentyp, Set-Typ und sequentieller Set-Typ.

 

Zeichenfolgentyp:

Es handelt sich um eine binärsichere Zeichenfolge, d. h., sie kann nicht nur Zeichenfolgen, sondern auch Bilder, Videos und andere Typen mit einer maximalen Länge von 512 MB speichern.

Für jeden Datentyp bietet Redis eine Vielzahl von Operationsbefehlen, beispielsweise:

  • GET/MGET
  • SET/SETEX/MSET/MSETNX
  • ERHÖHEN/VERRINGERN
  • GETSET
  • DEL

Hash-Typ:

Dieser Typ ist eine Zuordnung, die aus Feldern und zugehörigen Werten besteht, wobei sowohl Felder als auch Werte vom Typ „String“ sind.

Die Befehle für die Hash-Operation lauten wie folgt:

  • HGET/HMGET/HGETALL
  • HSET/HMSET/HSETNX
  • HEXISTS/HLEN
  • HKEYS/HDEL
  • HVALS

Listentyp:

Dieser Typ ist eine Sammlung von Zeichenfolgenelementen, die in Einfügereihenfolge sortiert sind und auf der Grundlage einer doppelt verknüpften Liste implementiert werden.

Die Befehle für die Listenoperation lauten wie folgt:

  • LPUSH/LPUSHX/LPOP/RPUSH/RPUSHX/RPOP/LINSERT/LSET
  • LINDEX/LRANGE
  • LLEN/LTRIM

Sammlungstyp:

Der Set-Typ ist eine ungeordnete Sammlung. Der größte Unterschied zum List-Typ besteht darin, dass die Elemente im Set keine Reihenfolge haben und eindeutig sind.

Die zugrunde liegende Schicht des Set-Typs wird durch eine Hash-Tabelle implementiert und ihre Operationsbefehle lauten:

  • SADD/SPOP/SMOVE/SCARD
  • SINTER/SDIFF/SDIFFSTORE/SUNION

Der Set-Typ wird hauptsächlich in bestimmten Szenarien verwendet, beispielsweise in sozialen Szenarien. Durch Schnittmengen-, Vereinigungs- und Differenzoperationen kann der Set-Typ verwendet werden, um soziale Beziehungen wie gemeinsame Freunde, gemeinsame Anliegen und gemeinsame Vorlieben leicht zu finden.

Sequentielle Sammlungstypen:

ZSet ist ein geordneter Mengentyp. Jedem Element ist eine doppelte Gewichtung zugeordnet, die zum Sortieren der Mengenelemente von klein nach groß verwendet wird. Wie beim Set-Typ wird auch seine zugrunde liegende Struktur durch eine Hashtabelle implementiert.

ZSet-Befehl:

  • ZADD/ZPOP/ZMOVE/ZCARD/ZCOUNT
  • ZINTER/ZDIFF/ZDIFFSTORE/ZUNION

Redis-Datenstruktur

Die Datenstruktur von Redis ist in der folgenden Abbildung dargestellt:

 

Einige Erläuterungen zur obigen Tabelle:

  1. Komprimierte Listen sind eine der zugrunde liegenden Implementierungen von Listenschlüsseln und Hash-Schlüsseln. Wenn ein Listenschlüssel nur eine kleine Anzahl von Listenelementen enthält und jedes Listenelement entweder eine kleine Ganzzahl oder eine kurze Zeichenfolge ist, verwendet Redis komprimierte Listen als zugrunde liegende Implementierung des Listenschlüssels.
  2. Integer-Sets sind eine der zugrunde liegenden Implementierungen von Set-Schlüsseln. Wenn ein Set nur ganzzahlige Werteelemente enthält und die Anzahl der Elemente in diesem Set gering ist, verwendet Redis Integer-Sets als zugrunde liegende Implementierung von Set-Schlüsseln.

Das Folgende ist ein Beispiel für die Definition einer Struct-Datenstruktur:

Was ist Redis?

Einfaches dynamisches String-SDS

Basierend auf den Mängeln herkömmlicher Zeichenfolgen in der Sprache C hat Redis einen abstrakten Typ namens „Simple Dynamic String“ (kurz SDS) mit der folgenden Struktur erstellt:

 

SDS durchläuft fast alle Datenstrukturen von Redis und wird häufig verwendet.

Eigenschaften von SDS

Im Vergleich zu C-Strings weist SDS die folgenden Eigenschaften auf:

 

  1. Konstante Komplexität zum Ermitteln der Zeichenfolgenlänge

In Redis kann das len-Attribut der SDS-Zeichenfolge verwendet werden, um die Länge der gespeicherten Zeichenfolge direkt abzurufen.
Die Komplexität zum Ermitteln der Länge einer Zeichenfolge wird direkt von O(N) einer C-Zeichenfolge auf O(1) reduziert.

  1. Reduzieren Sie die Anzahl der Speicherneuzuweisungen, die beim Ändern von Zeichenfolgen verursacht werden

Aus den Eigenschaften von C-Strings wissen wir, dass die zugrunde liegende Implementierung eines C-Strings mit N Zeichen immer ein Array mit N+1 Zeichen Länge ist (mit einem zusätzlichen Nullzeichen am Ende).

Wenn die Zeichenfolge zu diesem Zeitpunkt geändert werden muss, muss das Programm den Speicher des C-Zeichenfolgenarrays im Voraus neu zuweisen (er kann erweitert oder freigegeben werden).

Die Neuzuweisung des Speichers ist ein zeitaufwändiger Vorgang.

Redis nutzt SDS geschickt, um die Fehler von C-Strings zu vermeiden. In SDS entspricht die Länge des buf-Arrays nicht unbedingt der Anzahl der Zeichen im String plus eins. Das buf-Array kann ungenutzte Bytes enthalten, die durch das Attribut „free“ erfasst werden.

Gleichzeitig übernahm SDSSpeicherplatzvorbelegungDiese Strategie vermeidet die zeitaufwändige Neuzuweisung des Speichers bei jeder Änderung der C-Zeichenfolge und reduziert die Neuzuweisung des Speichers von N-mal für jeweils N Änderungen auf maximal N-mal für N Änderungen.

Das Folgende ist die einfache Definition von SDS durch Redis:

Redis-Funktion 1: Transaktionen

  • Befehlsserialisierung, der Reihe nach ausgeführt
  • Atomarität
  • Drei Phasen: Transaktion starten - Befehl in die Warteschlange stellen - Transaktion ausführen
  • Befehl: MULTI/EXEC/DISCARD

Redis-Funktion 2: Pub/Sub

  • Pub/Sub ist ein Messaging-Modell
  • Pub sendet Nachrichten, Sub empfängt Nachrichten
  • Ein Redis-Client kann eine beliebige Anzahl von Kanälen abonnieren
  • „Feuer und vergessen“
  • Befehl: Veröffentlichen/Abonnieren/Psubscribe/UnSub

Was ist Redis?

Redis-Funktion 3: Stream

  • Was ist neu in Redis 5.0
  • Warten auf den Verbrauch
  • Verbrauchergruppe (konzerninterner Wettbewerb)
  • Verbrauchsverlaufsdaten
  • FIFO

 

Das Obige stellt die Grundkonzepte von Redis dar. Als Nächstes stellen wir die „Fallstricke“ vor, die während des Entwicklungsprozesses auftreten können.

Redis FAQ: Aufschlüsselung

Konzept: Wenn Redis einen Schlüssel abruft, muss, da der Schlüssel nicht vorhanden ist, eine Anfrage an die Datenbank gestellt werden, die als „Redis-Zusammenbruch“ bezeichnet wird.

 

Ursachen für den Ausfall:

  • Erster Besuch
  • Böswilliger Zugriff auf nicht vorhandene Schlüssel
  • Schlüssel abgelaufen

Sinnvolle Problemumgehung:

  • Wenn der Server startet, schreiben Sie im Voraus
  • Standardisieren Sie die Schlüsselbenennung und das Abfangen durch Middleware
  • Legen Sie für einige häufig verwendete Schlüssel eine angemessene TTL fest oder lassen Sie sie nie ablaufen

Redis-FAQ: Avalanche

Konzept: Wenn die Redis-Cache-Schicht aus irgendeinem Grund ausfällt, werden alle Anforderungen an die Speicherschicht weitergeleitet. Hohe gleichzeitige Anforderungen in kurzer Zeit können dazu führen, dass die Speicherschicht hängen bleibt, was als „Redis-Lawine“ bezeichnet wird.

Sinnvolle Problemumgehung:

  • Verwenden des Redis-Clusters
  • Strombegrenzung

Anwendungspraxis von Redis in der Produktentwicklung

Aus diesem Grund freue ich mich sehr, Ihnen mitteilen zu können, dass Jim, der Architekt von Grape City, am 27.11.2019 um 14:00 Uhr eine offene Schulung abhält. Neben den Grundlagen von Redis wird Jim auch die Probleme und Lösungen demonstrieren, die seinem Projektteam bei der Verwendung von Redis begegnet sind. Für Teilnehmer, die Redis noch nicht kennen, ist die Schulung besonders aussagekräftig und wertvoll zum Nachschlagen und Lernen. Jeder ist herzlich eingeladen, teilzunehmen. Die Adresse der offenen Schulung lautet:https://live.vhall.com/661463644.

  • Das Backend verwendet nodeJS
  • Verwenden des Azure Redis-Diensts
  • Redis-Nutzungsszenarien

- Token-Cache, wird zur Token-Verifizierung verwendet

IP-Whitelist

Aufgetretene Probleme

  • „Netzwerk-Jitter“ oder eine Anomalie des Redis-Dienstes führt zu einem Timeout des Redis-Zugriffs
  • Stabilitätsproblem des Redis-Clienttreibers

- Verbindungspool „Unterbrochene Verbindung“-Problem

- Redis-Reset-Problem durch JS Promise verursacht

Werfen wir einen kurzen Blick auf die fortgeschrittenen Kenntnisse von Redis.

Erweiterte Einführung in das Redis-Protokoll

Redis-Client-Kommunikationsprotokoll: RESP (Redis Serialization Protocol), seine Eigenschaften sind:

  • Einfach
  • Schnelle Analysegeschwindigkeit
  • Gute Lesbarkeit

Internes Kommunikationsprotokoll des Redis-Clusters: RECP (Redis Cluster Protocol), seine Eigenschaften sind:

  • Jeder Knoten verfügt über zwei TCP-Verbindungen
  • Einer ist für die Client-Server-Kommunikation zuständig (P: 6379)
  • Einer ist für die Kommunikation zwischen den Knoten zuständig (P: 10000 + 6379)

 

Vom Redis-Protokoll unterstützte Datentypen:

  • Einfache Zeichen (erstes Byte: "+")

"+OK\r\n"

  • Fehler (erstes Byte: "-")

"-Fehlermeldung\r\n"

  • Zahl (erstes Byte: ":")

„:123\r\n“

  • Batch-Zeichen (erstes Byte: „$“)

"&hallo\r\nWer bist du\r\n"

  • Array (erstes Byte: "*")

"*0\r\n"

"*-1\r\n"

Welche anderen NoSQL-Datenbanken gibt es neben Redis?

Es gibt viele NoSQL-Datenbanken, die Redis ähneln, auf dem Markt. Wie in der folgenden Abbildung dargestellt, gibt es neben Redis auch MemCache, Cassadra und Mongo. Im Folgenden stellen wir diese Datenbanken kurz vor:

 

Memcache:Dies ist eine Redis-ähnliche Datenbank, deren Datentypen jedoch nicht so umfangreich sind. Memcache wurde von Brad Fitzpatrick von LiveJournal entwickelt. Als verteiltes Hochgeschwindigkeits-Cache-System wird es von vielen Websites verwendet, um deren Zugriffsgeschwindigkeit zu verbessern. Dies trägt erheblich zur Verbesserung der Zugriffsgeschwindigkeit einiger großer Websites bei, die häufig auf die Datenbank zugreifen müssen.

Kassandra:(in der Community allgemein als C* bezeichnet) Dies ist ein verteiltes Open-Source-NoSQL-Datenbanksystem. Es wurde ursprünglich von Facebook entwickelt, um Daten in einfachem Format wie Posteingänge zu speichern. Das Datenmodell von BigTable und Dynamos vollständig verteilte Architektur. Facebook hat Cassandra 2008 als Open Source freigegeben. Aufgrund seiner guten Skalierbarkeit und Leistung wird es von Apple, Comcast, Instagram, Spotify,, Rackspace,Es wurde von bekannten Websites wie übernommen und hat sich zu einer beliebten verteilten Lösung zur strukturierten Datenspeicherung entwickelt.

MongoDB: Es handelt sich um eine dokumentenorientierte NoSQL-Datenbank, die auf verteiltem Dateispeicher basiert, in C++ geschrieben ist und skalierbare und leistungsstarke Datenspeicherlösungen für Webanwendungen bietet. MongoDB ist ein Produkt zwischen relationalen und nicht-relationalen Datenbanken. Es ist die funktionsreichste und relationalste Datenbank unter den nicht-relationalen Datenbanken. Die unterstützte Datenstruktur ist sehr locker und basiert auf einem JSON-ähnlichen BSON-Format.

Redis unter Linux installieren

Im Folgenden wird das CentOS-System als Beispiel verwendet, um Redis zu installieren und in WordPress anzuwenden.

Installieren Sie Redis mit DNF

dnf Redis installieren

Verwenden Sie den Befehl „list“, um zu überprüfen, ob die Installation erfolgreich war.

Linux-Installation Redis-Anfänger-Tutorial PHP-Cache-Tool Redis detaillierte Erklärung

Nach der Installation den Boot- und Startdienst einrichten

systemctl aktiviere redis systemctl start redis

Linux-Installation Redis-Anfänger-Tutorial PHP-Cache-Tool Redis detaillierte Erklärung

Verwenden Sie den Befehl, um den Ausführungsstatus von Redis zu überprüfen.

systemctl status redis

Linux-Installation Redis-Anfänger-Tutorial PHP-Cache-Tool Redis detaillierte ErklärungDie Installation von Redis mit DNF ist bequem und schnell. Redis ist nun installiert. Die Redis-Konfigurationsdatei befindet sich unter: /etc/redis.conf

 

Installieren Sie das Redis-Plugin in WordPress

Suche nach Redis im WordPress-Hintergrund-Plugin

Linux-Installation Redis-Anfänger-Tutorial PHP-Cache-Tool Redis detaillierte Erklärung

Redis Object Cache installieren

Linux-Installation Redis-Anfänger-Tutorial PHP-Cache-Tool Redis detaillierte Erklärung

Wenn Sie die professionelle Version des Plug-Ins benötigen, müssen Sie die PHP-Erweiterung installieren.

Punktzahl

Das ist eine gute Idee

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * Mark