Heim  >  Artikel  >  Datenbank  >  Wann sollten Sie sich für Redis entscheiden?

Wann sollten Sie sich für Redis entscheiden?

WBOY
WBOYnach vorne
2023-05-27 10:28:161749Durchsuche

1. Für komplexe Datenstrukturen ist es besser, redis zu wählen

Wenn der Wert eine komplexe Datenstruktur wie ein Hash, eine Liste oder ein Satz ist , oder bestellter Satz, Ich werde Redis wählen, weil mc diese Anforderungen nicht erfüllen kann.

Die typischsten Szenarien, Benutzerbestellliste, Benutzernachricht, Post-Kommentarliste usw.

2. Persistenz, Redis ist besser geeignet

mc kann die Persistenzanforderungen nicht erfüllen, daher müssen wir uns für Redis entscheiden. Beachten Sie jedoch Folgendes: Haben Sie wirklich sichergestellt, dass Sie die Persistenzfunktion von Redis korrekt verwenden?

Verwenden Sie Redis niemals als Datenbank:

  • Regelmäßige Snapshots von Redis können nicht garantieren, dass keine Daten verloren gehen;

    #🎜 🎜#
  • Das AOF von Redis verringert die Effizienz und kann keine zu großen Datenmengen unterstützen;

Erwarten Sie nicht, dass Redis besser ist als Solid Storage MySQL ist gut gemacht. Die Verwendung von Redis als Datenbank ist zu 80 % falsch.

Welche Vor- und Nachteile hat die Aktivierung der Heilungsfunktion in Cache-Szenarien?

Wenn es sich nur um ein Cache-Szenario handelt, werden die Daten in der Datenbank gespeichert und in Redis zwischengespeichert . Wenn die Aushärtungsfunktion zu diesem Zeitpunkt aktiviert ist: #🎜 🎜#

Der Vorteil besteht darin, dass heiße Daten schnell im Speicher wiederhergestellt werden können und die Datenbank nicht sofort belastet wird , und es gibt keinen Cache-Vorheizvorgang.

Der Nachteil besteht darin, dass während des Redis-Aufhängungsvorgangs bei Datenänderungen in der Datenbank die Datenbank und die Redis-Daten nach dem Neustart von Redis inkonsistent sein können.

Daher können Sie für schreibgeschützte Szenarien oder um einige inkonsistente Geschäftsszenarien zuzulassen, versuchen, die Verfestigungsfunktion von Redis zu aktivieren.

3. Für eine hohe Verfügbarkeit ist es besser, Redis zu wählen

Redis unterstützt natürlich Clustering-Funktionen und kann eine aktive Replikation und Lese- Trennung schreiben.

Redis bietet offiziell auch ein Sentinel-Cluster-Management-Tool, das eine Master-Slave-Dienstüberwachung und ein automatisches Failover realisieren kann. All dies ist für den Client transparent, ohne dass Programmänderungen oder manuelle Eingriffe erforderlich sind.

Voiceover: Um eine hohe Verfügbarkeit zu erreichen, ist für Memcache eine sekundäre Entwicklung erforderlich, z. B. doppeltes Lesen und doppeltes Schreiben auf dem Client oder Clustersynchronisierung auf dem Server.

Wir sollten Sie jedoch daran erinnern, dass Caching in den meisten Geschäftsszenarien wirklich hochverfügbar sein muss #Dann müssen wir das Geschäftsszenario sorgfältig analysieren

Voiceover: Im Instant-Messaging-Geschäft ist der Online-Status des Benutzers hoch Verfügbarkeitsanforderungen.

  • 4. Der gespeicherte Inhalt ist relativ groß, daher ist Redis besser geeignet. Groß, nur Redis kann verwendet werden.

    Natürlich hat Redis im Vergleich zu Memcache auch einige „Nachteile“ aufgrund der Unterschiede in den zugrunde liegenden Implementierungsmechanismen.
  • Szenario 1: Aufgrund von Unterschieden in den Speicherzuweisungsmechanismen kann Redis zu Speicherfragmentierung führen.

memcache verwendet einen vorab zugewiesenen Speicherpool zur Verwaltung Speicher. Es kann Speicherzuweisungszeit sparen.

redis ist eine temporäre Anwendung für den Weltraum, die zu Fragmentierung führen kann.

Von diesem Punkt an wird mc schneller sein.

Szenario 2: Aufgrund der unterschiedlichen Nutzung des virtuellen Speichers kann Redis geleert werden und die Leistung beeinträchtigen.

memcache speichert alle Daten im physischen Speicher innen.

Redis verfügt über einen eigenen VM-Mechanismus, der theoretisch mehr Daten als den physischen Speicher speichern kann. Wenn die Datenmenge überschritten wird, wird ein Swap ausgelöst, um kalte Daten auf die Festplatte zu leeren. Ab diesem Zeitpunkt ist mc schneller, wenn die Datenmenge groß ist.

Voiceover: Die neue Version von Redis wurde optimiert.

Situation 3: Aufgrund von Unterschieden in den Netzwerkmodellen kann sich Redis aufgrund von CPU-Berechnungen auf die E/A-Planung auswirken.

Memcache verwendet einen nicht blockierenden E/A Wiederverwendungsmodell: Redis verwendet auch ein nicht blockierendes E/A-Multiplexmodell.

Aber da Redis neben dem KV-Speicher auch einige Sortier- und Aggregationsfunktionen bereitstellt, blockieren komplexe CPU-Berechnungen bei der Ausführung dieser Funktionen die gesamte E/A-Planung.

Da Redis ab diesem Zeitpunkt mehr Funktionen bereitstellt, ist mc schneller.

Situation 4: Aufgrund der Unterschiede in den Thread-Modellen ist es für Redis schwierig, Multi-Core-Spezialeffekte zu verwenden, um die Leistung zu verbessern

memcache Verwendet Multithreads, Hauptthread-Überwachung, Worker. Der untergeordnete Thread akzeptiert die Anforderung und führt Lese- und Schreibvorgänge aus. Während dieses Prozesses kann es zu einem Sperrkonflikt kommen.

Redis verwendet einen einzelnen Thread. Obwohl es keinen Sperrkonflikt gibt, ist es schwierig, die Eigenschaften von Multi-Core zu nutzen, um den Gesamtdurchsatz zu verbessern.

Von diesem Punkt an wird mc schneller sein.

Situation 5: Aufgrund des fehlenden Autoshardings kann Redis nur manuell horizontal erweitert werden

Ob Redis oder Memcache, Der Servercluster verfügt über keine natürliche Unterstützung für die horizontale Erweiterung. Auf der Clientseite ist Sharding erforderlich, was für den Anrufer tatsächlich nicht benutzerfreundlich ist. Perfekter wäre es, wenn der Servercluster eine horizontale Erweiterung unterstützen könnte.

Schließlich ist dies möglicherweise einer der Gründe, warum viele Leute Redis mögen: Der Quellcode ist gut lesbar und die Codequalität ist sehr hoch.

Ich habe den Quellcode von Redis und Memcache gesehen. In Bezug auf die Lesbarkeit ist Redis die Software mit dem saubersten Code, den ich je gesehen habe. Vielleicht ist Einfachheit die ursprüngliche Absicht Redis-Design. Es ist nicht erforderlich, Redis zu konfigurieren und sich nicht auf Bibliotheken von Drittanbietern zu verlassen.

Was den Memcache-Quellcode betrifft, wurde möglicherweise zu viel Skalierbarkeit und Kompatibilität mit mehreren Systemen berücksichtigt, und der Code ist nicht klar und sieht mühsam aus.

Für den Netzwerk-IO-Teil sind beispielsweise nur 1-2 Dateien des Redis-Quellcodes erforderlich. Ein FD wird von einem Ende zum anderen über Pipes und Threads weitergeleitet ist besonders leicht, Menschen zu verwirren.

Das obige ist der detaillierte Inhalt vonWann sollten Sie sich für Redis entscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen