Hervorragende Software und praktische Tutorials
Installieren Sie Redis unter Linux, um den PHP-Zugriff zu beschleunigen
Redis unter Linux installieren 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 beliebtestenPHP-Cache-ToolErstens: 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:
- Geringe Latenz beim Lesen und Schreiben: Schnelle Anwendungsreaktionen können die Benutzerzufriedenheit erheblich steigern
- 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.
- Verwaltung großer Cluster: Systemadministratoren hoffen, dass verteilte Anwendungen einfacher bereitgestellt und verwaltet werden können.
- 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?
- github
- Stapelüberlauf
- Alibaba
- Baidu
- Meituan
- Sohu
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.
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:
- 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.
- 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:
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:
- 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.
- 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
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.
Apache 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.Google Das Datenmodell von BigTable undAmazonas 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,eBay, Rackspace,NetflixEs 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.
Nach der Installation den Boot- und Startdienst einrichten
systemctl aktiviere redis systemctl start redis
Verwenden Sie den Befehl, um den Ausführungsstatus von Redis zu überprüfen.
systemctl status redis
Die 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
Redis Object Cache installieren
Wenn Sie die professionelle Version des Plug-Ins benötigen, müssen Sie die PHP-Erweiterung installieren.