1. Welche Vorteile bietet die Verwendung von Redis?
(1) Es ist schnell, weil die Daten im Speicher gespeichert werden, ähnlich wie bei HashMap. Der Vorteil von HashMap besteht darin, dass die zeitliche Komplexität von Suche und Betrieb O(1) ist
(2 ) Reichhaltige Unterstützung für Datentypen, unterstützt Zeichenfolge, Liste, Menge, sortierte Menge, Hash
(3) Unterstützt Transaktionen, Operationen sind alle atomar. Die sogenannte Atomizität bedeutet, dass alle Änderungen an den Daten entweder ausgeführt werden oder Überhaupt nicht ausgeführt
(4) Umfangreiche Funktionen: Kann zum Zwischenspeichern, Versenden von Nachrichten und zum Festlegen der Ablaufzeit per Schlüssel verwendet werden, es wird nach Ablauf automatisch gelöscht
2. Was sind die Vorteile von Redis im Vergleich zu Memcached?
(1) Alle Werte in Memcached sind einfache Zeichenfolgen. Als Ersatz unterstützt Redis umfangreichere Datentypen
(2) Redis ist viel schneller als Memcached
( 3) Redis kann seine Daten beibehalten
3. Häufige Redis-Leistungsprobleme und Lösungen:
(1) Der Master führt am besten keine Persistenzarbeiten durch, wie z. B. RDB-Speicher-Snapshot und AOF-Protokolldatei
(2) Wenn die Daten wichtig sind, aktiviert ein Slave AOF-Sicherungsdaten und die Richtlinie ist so eingestellt, dass sie einmal pro Sekunde synchronisiert.
(3) Für die Master-Slave-Replikation. Für Geschwindigkeit und Verbindung Stabilität, es ist am besten, wenn sich Master und Slave im selben LAN befinden
(4) Vermeiden Sie das Hinzufügen von Slave-Bibliotheken zur belasteten Master-Bibliothek
(5) Master-Slave Nicht verwenden Eine Diagrammstruktur zum Kopieren ist stabiler, eine einseitig verknüpfte Listenstruktur zu verwenden, das heißt: Master <- Slave1 <- Slave2 <- Slave3...
Eine solche Struktur ist praktisch um das Problem des Single-Point-Fehlers zu lösen und den Slave-Ersatz des Masters zu realisieren. Wenn der Master auflegt, können Sie Slave1 sofort als Master aktivieren und alles andere unverändert lassen.
4. Es gibt 20 Millionen Daten in MySQL, aber nur 200.000 Daten werden in Redis gespeichert Der Speicherdatensatz ist auf eine bestimmte Größe angewachsen. Zu gegebener Zeit wird eine Dateneliminierungsstrategie implementiert. redis bietet 6 Dateneliminierungsstrategien:
voltile-lru: Wählen Sie die zuletzt verwendeten Daten aus dem Datensatz (server.db[i].expires) mit einer für die Eliminierung festgelegten Ablaufzeit aus
volatile-ttl: Wählen Sie die abzulaufenden Daten aus dem Datensatz (server.db[i].expires) mit einer festgelegten Ablaufzeit aus und entfernen Sie sie.
volatile-random: Wählen Sie den Datensatz mit einer Ablaufzeit aus (server. db[i].expires), um alle Daten zu entfernen
allkeys-lru: Wählen Sie die zuletzt verwendeten Daten aus dem Datensatz (server.db[i].dict) aus, um
allkeys -random: Daten willkürlich aus dem Datensatz (server.db[i].dict) auswählen, um sie zu eliminieren No-Enviction (Räumung): Räumung von Daten verbieten 5. Der Unterschied zwischen Memcache und Redis Was ist das? 1). Speichermethode Memecache speichert alle Daten im Speicher. Nach einem Stromausfall bleiben die Daten hängen. Redis wird teilweise auf der Festplatte gespeichert, was die Datenpersistenz gewährleistet. 2), Datenunterstützungstypen Memcaches Unterstützung für Datentypen ist relativ einfach. Redis verfügt über komplexe Datentypen. 3). Es werden verschiedene zugrunde liegende Modelle verwendet Die zugrunde liegenden Implementierungsmethoden und Anwendungsprotokolle für die Kommunikation mit Clients sind unterschiedlich. Redis hat den VM-Mechanismus direkt selbst erstellt, denn wenn das allgemeine System Systemfunktionen aufruft, verschwendet es eine gewisse Zeit zum Verschieben und Anfordern. 4), Wertgröße Redis kann maximal 1 GB erreichen, während Memcache nur 1 MB beträgt6 Was sind die häufigsten Leistungsprobleme von Redis? Wie kann man es lösen? 1) Der Master schreibt Speicher-Snapshots und der Speicherbefehl plant die rdbSave-Funktion, die die Arbeit des Haupt-Threads blockiert, was sehr große Auswirkungen auf die Leistung hat Der Dienst wird zeitweise angehalten, daher ist Master die beste Lösung. Schreiben Sie keine Speicher-Snapshots. 2). Wenn die AOF-Datei nicht neu geschrieben wird, hat diese Persistenzmethode nur minimale Auswirkungen auf die Leistung, aber die AOF-Datei wird weiter wachsen beeinflussen die Wiederherstellung der Master-Neustartgeschwindigkeit. Der Master sollte keine Persistenzarbeiten durchführen, einschließlich Speicher-Snapshots und AOF-Protokolldateien. Wenn die Daten kritisch sind, sollte ein Slave die AOF-Sicherungsdaten aktivieren Die Strategie besteht darin, einmal pro Sekunde zu synchronisieren. 3).Master ruft BGREWRITEAOF auf, um die AOF-Datei neu zu schreiben. Während des Neuschreibens belegt AOF eine große Menge an CPU- und Speicherressourcen, was zu einer übermäßigen Dienstlast und einer kurzfristigen Dienstunterbrechung führt. 4). Leistungsprobleme der Redis-Master-Slave-Replikation und die Stabilität der Verbindung, wenn sich Slave und Master im selben LAN befinden 7. Redis eignet sich am besten für alle Daten-In-Memory-Szenarien. Obwohl Redis auch Persistenzfunktionen bietet, handelt es sich tatsächlich eher um eine festplattengestützte Funktion, die sich deutlich davon unterscheidet Persistenz im herkömmlichen Sinne, dann haben Sie möglicherweise Fragen. Es scheint, dass Redis eher eine erweiterte Version von Memcached ist. Wann sollte man also Memcached und wann Redis verwenden?Wenn Sie einfach den Unterschied vergleichen Der große Unterschied zwischen Redis und Memcached besteht darin, dass die meisten Menschen die folgenden Meinungen vertreten: 1. Redis unterstützt nicht nur einfache Daten vom Typ k/v, sondern bietet auch die Speicherung von Datenstrukturen wie Liste, Satz und Zset , und Hash. 2. Redis unterstützt die Datensicherung, also die Datensicherung im Master-Slave-Modus. 3. Redis unterstützt Datenpersistenz, wodurch Daten im Speicher auf der Festplatte verbleiben und bei einem Neustart erneut geladen werden können.(1), Sitzungscache
Eines der am häufigsten verwendeten Szenarien für die Verwendung von Redis ist der Sitzungscache. Der Vorteil der Verwendung von Redis zum Zwischenspeichern von Sitzungen gegenüber anderem Speicher (z. B. Memcached) besteht darin, dass Redis Persistenz bietet. Bei der Verwaltung eines Caches, der nicht unbedingt Konsistenz erfordert, wären die meisten Menschen unzufrieden, wenn alle Warenkorbinformationen des Benutzers verloren gehen würden. Wäre das dann immer noch der Fall?
Da sich Redis im Laufe der Jahre verbessert hat, ist es glücklicherweise leicht herauszufinden, wie man Redis richtig zum Zwischenspeichern von Sitzungsdokumenten verwendet. Auch die bekannte kommerzielle Plattform Magento stellt Redis-Plug-Ins zur Verfügung.
(2), Full Page Cache (FPC)
Zusätzlich zu den grundlegenden Sitzungstoken bietet Redis auch eine sehr einfache FPC-Plattform. Zurück zum Konsistenzproblem: Selbst wenn die Redis-Instanz neu gestartet wird, werden Benutzer aufgrund der Festplattenpersistenz keinen Rückgang der Seitenladegeschwindigkeit feststellen. Dies ist eine große Verbesserung, ähnlich wie bei PHP Local FPC.
Am Beispiel von Magento bietet Magento ein Plugin zur Verwendung von Redis als Backend für den Ganzseiten-Cache.
Darüber hinaus verfügt Pantheon für WordPress-Benutzer über ein sehr gutes Plug-in wp-redis, mit dem Sie die von Ihnen durchsuchten Seiten so schnell wie möglich laden können.
(3), Warteschlange
Einer der großen Vorteile von Redis im Bereich der Speicher-Engines besteht darin, dass es Listen- und Set-Operationen bereitstellt, wodurch Redis als gute Nachricht verwendet werden kann Warteschlangenplattform. Die von Redis als Warteschlange verwendeten Vorgänge ähneln den Push/Pop-Vorgängen der Liste in lokalen Programmiersprachen (wie Python).
Wenn Sie in Google schnell nach „Redis-Warteschlangen“ suchen, werden Sie sofort eine große Anzahl von Open-Source-Projekten finden. Der Zweck dieser Projekte besteht darin, mit Redis sehr gute Back-End-Tools zu erstellen, um verschiedene Warteschlangen zu erfüllen Bedürfnisse. Celery verfügt beispielsweise über ein Backend, das Redis als Broker verwendet. Sie können es hier anzeigen.
(4), Rangliste/Zähler
Redis implementiert den Vorgang des Erhöhens oder Verringerns von Zahlen im Speicher sehr gut. Sets und sortierte Sets machen es uns auch sehr einfach, diese Operationen durchzuführen. Redis stellt lediglich diese beiden Datenstrukturen bereit.
Also wollen wir die Top-10-Benutzer aus der sortierten Menge erhalten – nennen wir sie „user_scores“, und wir müssen es einfach so machen:
Natürlich setzt dies das voraus Sie sortieren in aufsteigender Reihenfolge basierend auf den Bewertungen Ihrer Benutzer. Wenn Sie den Benutzer und die Punktzahl des Benutzers zurückgeben möchten, müssen Sie dies wie folgt ausführen:
ZRANGE user_scores 0 10 WITHSCORES
Agora Games ist ein gutes Beispiel, das in Ruby implementiert ist und dessen Rankings Redis zum Speichern von Daten verwenden es hier.
(5), Veröffentlichen/Abonnieren
Zuletzt (aber sicherlich nicht zuletzt) ist die Veröffentlichungs-/Abonnementfunktion von Redis. Es gibt tatsächlich viele Anwendungsfälle für Publish/Subscribe. Ich habe gesehen, wie Leute es in sozialen Netzwerkverbindungen, als Auslöser für Veröffentlichungs-/Abonnement-basierte Skripte und sogar zum Aufbau von Chat-Systemen mithilfe der Veröffentlichungs-/Abonnement-Funktionalität von Redis verwenden! (Nein, das stimmt, Sie können es nachschauen).
Von allen von Redis bereitgestellten Funktionen ist diese meiner Meinung nach diejenige, die den Leuten am wenigsten gefällt, obwohl sie den Benutzern diese Multifunktion bietet.
Weitere Redis-Kenntnisse finden Sie in der Spalte Redis-Einführungs-Tutorial.
Das obige ist der detaillierte Inhalt vonEinführung in die Vor- und Nachteile und Unterschiede zwischen Redis und Memcached. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!