Redis bietet eine Fülle von Funktionen, wenn Sie sie zum ersten Mal sehen. Wofür werden diese Funktionen verwendet? Welche Probleme wurden gelöst? Unter welchen Umständen wird die entsprechende Funktion verwendet? Beginnen wir mit einer Schritt-für-Schritt-Erklärung.
Cache basierend auf lokalem Speicher
Um das Problem zu lösen, dass der Aufruf der API nach der Untersuchung immer noch 2 Sekunden dauert, Der Hauptgrund Da es fast 2 Sekunden dauerte, SQL zu verwenden, um aktuelle Nachrichten zu erhalten, haben wir uns eine einfache und grobe Lösung überlegt, die darin besteht, die Ergebnisse der SQL-Abfrage direkt im Speicher des aktuellen API-Servers zwischenzuspeichern (den Cache festzulegen). Die gültige Zeit beträgt 1 Minute). Nachfolgende Anforderungen innerhalb von 1 Minute lesen den Cache direkt und die Ausführung von SQL dauert nicht mehr 2 Sekunden. Wenn diese API 100 Anfragen pro Sekunde empfängt, gibt es 6.000 Anfragen pro Minute. Das heißt, nur die in den ersten 2 Sekunden überfüllten Anfragen werden 2 Sekunden dauern und alle Anfragen in den folgenden 58 Sekunden können sofort beantwortet werden noch 2 Sekunden warten.
Redis auf der Serverseite
Als der Speicher des API-Servers mit Cache gefüllt war, stellten wir fest, dass wir uns eine andere Lösung überlegen mussten. Die einfachste Idee besteht darin, alle diese Caches auf einem dedizierten Server abzulegen und dessen Speicher groß zu konfigurieren. Dann konzentrierten wir uns auf Redis. . . Was die Konfiguration und Bereitstellung von Redis angeht, werde ich hier keine detaillierte Einführung geben. Dann haben wir einen separaten Server als Redis-Server verwendet und den Speicherdruck des API-Servers gelöst.
Persistenz
Ein einzelner Redis-Server ist an einigen Tagen im Monat immer schlecht gelaunt und streikt, wenn er schlecht gelaunt ist, was zu Problemen führt Alle Caches gehen verloren (Redis-Daten werden im Speicher gespeichert). Obwohl der Redis-Server wieder online geschaltet werden konnte, verursachte der Speicherdatenverlust eine Cache-Lawine und der Druck auf den API-Server und die Datenbank nahm plötzlich zu. Zu diesem Zeitpunkt ist die Persistenzfunktion von Redis praktisch, um die Auswirkungen einer Cache-Lawine zu lindern. Die Persistenz von Redis bedeutet, dass Redis die Daten im Speicher auf die Festplatte schreibt und beim Neustart von Redis lädt, wodurch die Auswirkungen von Cache-Verlusten minimiert werden.
Sentinel und Replikation
Redis-Serverausfälle ohne Vorwarnung sind eine problematische Sache. Was also tun? Die Antwort lautet: Sichern Sie eine Maschine und legen Sie sie auf. Woher wissen Sie also, dass ein bestimmter Redis-Server ausgefallen ist, wie wechseln Sie und wie stellen Sie sicher, dass die Sicherungsmaschine eine vollständige Sicherung des ursprünglichen Servers ist? Zu diesem Zeitpunkt müssen Sentinel und Replication angezeigt werden. Sentinel kann mehrere Redis-Server verwalten und bietet Überwachungs-, Erinnerungs- und automatische Failover-Funktionen; die Replikation ist dafür verantwortlich, dass ein Redis-Server mit mehreren Backup-Servern ausgestattet werden kann. Redis nutzt diese beiden Funktionen auch, um die hohe Verfügbarkeit von Redis sicherzustellen. Darüber hinaus ist die Sentinel-Funktion eine Nutzung der Veröffentlichungs- und Abonnementfunktionen von Redis.
Cluster
Es gibt immer eine Obergrenze für die Ressourcen eines einzelnen Servers. Wir können die Master-Slave-Replikation für CPU-Ressourcen und E/A-Ressourcen verwenden, um Lese- und Übertragen Sie einen Teil des CPU- und IO-Drucks an den Slave-Server. Aber was tun mit den Speicherressourcen? Der Master-Slave-Modus sichert nur die gleichen Daten und kann den Speicher nicht horizontal erweitern. Der Speicher einer einzelnen Maschine kann jedoch immer erhöht werden. Wir brauchen also eine Lösung, die uns eine horizontale Skalierung ermöglicht. Das ultimative Ziel besteht darin, jeden Server nur für einen Teil davon verantwortlich zu machen, sodass alle diese Server ein Ganzes bilden. Für externe Verbraucher ist diese Gruppe verteilter Server wie ein zentralisierter Server
Das obige ist der detaillierte Inhalt vonWelche Funktionen hat Redis?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!