Inhaltsverzeichnis
12 wichtige Punkte, die häufig in Redis-Interviews gestellt werden
Heim Datenbank Redis 12 wichtige Punkte, die in Redis-Interviews häufig gefragt werden (mit Antworten)

12 wichtige Punkte, die in Redis-Interviews häufig gefragt werden (mit Antworten)

Feb 14, 2022 am 10:51 AM
redis

Dieser Artikel bietet Ihnen eine Zusammenfassung einiger Fragen, die häufig in Vorstellungsgesprächen zu Redis gestellt werden. Er simuliert, wie der Interviewer Schritt für Schritt ausführlich auf das Thema Redis eingeht, und untersucht umfassend, wie gut der Kandidat Redis beherrscht um es besser zu verstehen.

12 wichtige Punkte, die in Redis-Interviews häufig gefragt werden (mit Antworten)

Empfohlene Studie: „2022 neueste Fragen und Antworten zu Redis-Interviews

12 wichtige Punkte, die häufig in Redis-Interviews gestellt werden

Redis ist eine Schwelle, die im Interview nicht umgangen werden kann, solange es geschrieben wird im Lebenslauf Wenn Sie Redis verwendet haben, werden Sie definitiv nicht daran vorbeikommen.

Xiao Zhang:

Hallo, Interviewer. Ich bin hier für ein Interview.

Interviewer:

Hallo, Xiao Zhang. Ich habe Ihren Lebenslauf gelesen und beherrsche Redis, daher werde ich Ihnen nur ein paar Redis-bezogene Fragen stellen. Zunächst einmal lautet meine Frage: Ist Redis Single-Threaded oder Multi-Threaded?

Xiao Zhang:

Die in verschiedenen Versionen von Redis verwendeten Threading-Modelle sind unterschiedlich. Vor Redis Version 4.0 wurde ein Single-Thread-Modell verwendet, und nach Version 4.0 wurde Multi-Threading-Unterstützung hinzugefügt.

Obwohl wir vor 4.0 sagten, dass Redis Single-Threaded ist, bedeutete dies nur, dass sein Netzwerk-E/A-Thread sowie die Set- und Get-Vorgänge von einem Thread abgeschlossen wurden. Die Redis-Persistenz und die Clustersynchronisierung werden jedoch weiterhin mithilfe anderer Threads durchgeführt.

Multithreading-Unterstützung wurde nach 4.0 hinzugefügt, was sich hauptsächlich in der asynchronen Löschfunktion von Big Data wie unlink keyflushdb asyncflushall async usw. widerspiegelt.

Interviewer:

Die Antwort ist sehr gut: Warum hat sich Redis dann früher für die Verwendung eines einzelnen Threads entschieden? 4,0? Und ist es mit Single Thread so schnell?

Xiao Zhang:

Ich persönlich denke, dass die Wahl eines einzelnen Threads hauptsächlich darauf zurückzuführen ist, dass er einfach zu verwenden ist, keine Sperrenkonkurrenz besteht, alle Vorgänge ohne Sperren ausgeführt werden können und es keinen Leistungs- und Zeitaufwand durch Deadlocks gibt Thread-Umschaltung, aber gleichzeitig kann ein einzelner Thread die Leistung einer Multi-Core-CPU nicht voll ausschöpfen.

Was die Geschwindigkeit eines einzelnen Threads angeht, gibt es meiner Meinung nach hauptsächlich die folgenden Gründe:

  • Die Ausführungseffizienz im Speicher ist sehr schnell und verwendet effiziente Datenstrukturen Tabellen und Skip-Tabellen.

  • Die Verwendung eines einzelnen Threads vermeidet Multi-Thread-Konkurrenz, spart Zeit und Leistungsaufwand durch Multi-Thread-Switching und verursacht keinen Deadlock.

  • Verwendet den E/A-Multiplexmechanismus, um eine große Anzahl von Client-Socket-Anfragen zu verarbeiten, da er auf einem nicht blockierenden E/A-Modell basiert, das es Redis ermöglicht, Netzwerkkommunikation sowie E/A-Lese- und Schreibprozesse effizient durchzuführen Kein Blockieren mehr.

Interviewer:

Gut, Wie erreicht Redis keinen Datenverlust?

Xiao Zhang:

Redis-Daten werden im Speicher gespeichert. Um sicherzustellen, dass die Redis-Daten nicht verloren gehen, müssen die Daten aus dem Speicher auf der Festplatte gespeichert werden, damit die Originaldaten von der Festplatte wiederhergestellt werden können Nach dem Neustart des Servers ist dies die Datenpersistenz von Redis. Es gibt drei Möglichkeiten, Redis-Daten beizubehalten.

  • AOF-Protokoll (Nur Datei anhängen): Zeichnen Sie alle Betriebsbefehle auf und hängen Sie sie in Textform an die Datei an.

  • RDB Snapshot (Redis DataBase): Schreiben Sie die Speicherdaten zu einem bestimmten Zeitpunkt in binärer Form auf die Festplatte.

  • Hybride Persistenzmethode: Redis 4.0 fügt eine neue hybride Persistenzmethode hinzu, die die Vorteile von RDB und AOF integriert.

Interviewer:

Dann sprechen Sie bitte über die Implementierungsprinzipien von AOF bzw. RDB.

Xiao Zhang:

AOF verwendet die Post-Write-Protokollierung, führt zuerst den Befehl aus, um die Daten in den Speicher zu schreiben, und zeichnet dann das Protokoll in der Datei auf. Das AOF-Protokoll zeichnet Betriebsbefehle auf, keine tatsächlichen Daten. Wenn die AOF-Methode zur Fehlerbehebung verwendet wird, muss das gesamte Protokoll ausgeführt werden.

12 wichtige Punkte, die in Redis-Interviews häufig gefragt werden (mit Antworten)

RDB verwendet eine Speicher-Snapshot-Methode. Sie zeichnet Daten zu einem bestimmten Zeitpunkt auf, keine Vorgänge. Daher müssen Sie bei Verwendung der RDB-Methode zur Fehlerwiederherstellung nur die RDB-Datei direkt in den Speicher einlesen, um eine schnelle Wiederherstellung zu erreichen .

Interviewer:

Sie haben gerade erwähnt, dass AOF eine „Post-Write-Log“-Methode verwendet, während das von uns normalerweise verwendete MySQL eine „Pre-Write-Log“-Methode verwendet. Warum muss Redis also zuerst den Befehl ausführen? Daten schreiben? Was ist mit dem Schreiben in das Protokoll?

Xiao Zhang: Ich habe angefangen, auf meiner Stirn zu schwitzen. Welche Fragen hast du gestellt? . .

Nun, das liegt hauptsächlich daran, dass Redis vor dem Schreiben des Protokolls keine Syntaxprüfung für Befehle durchführt, sodass nur erfolgreich ausgeführte Befehle aufgezeichnet werden, um die Aufzeichnung falscher Befehle zu vermeiden, und das Schreiben von Protokollen nach der Ausführung des Befehls den aktuellen Schreibvorgang nicht blockiert.

Interviewer:

Was sind dann die Risiken, nach ein Tagebuch zu schreiben?

Xiao Zhang:

Ich...ich weiß nicht, wie ich das machen soll.

Interviewer:

Nun, es gibt zwei Hauptrisiken, die beim Schreiben von Protokollen auftreten können:

  • Daten können verloren gehen: Wenn Redis gerade die Ausführung des Befehls abgeschlossen hat und zu diesem Zeitpunkt ein Fehler auftritt, wird dieser Befehl ausgeführt. Es besteht die Gefahr eines Verlustes.

  • Kann andere Vorgänge blockieren: Das AOF-Protokoll wird tatsächlich im Hauptthread ausgeführt. Wenn Redis also die Protokolldatei auf die Festplatte schreibt, blockiert es weiterhin nachfolgende Vorgänge und kann nicht ausgeführt werden.

Ich habe noch eine Frage: Wird RDB Threads blockieren, wenn Snapshots erstellt werden?

Xiao Zhang:

Redis bietet zwei Befehle zum Generieren von RDB-Snapshot-Dateien, nämlich save und bgsave. Der Speicherbefehl wird im Hauptthread ausgeführt und führt zu einer Blockierung. Der Befehl bgsave erstellt einen untergeordneten Prozess zum Schreiben von RDB-Dateien und vermeidet so das Blockieren des Hauptthreads. Dies ist auch die Standardkonfiguration von Redis RDB.

Interviewer:

RDB Können die Daten beim Aufnehmen eines Schnappschusses geändert werden?

Xiao Zhang:

save ist synchron und blockiert Client-Befehle, kann aber während bgsave geändert werden.

Interviewer:

Dann Wie löst Redis das Problem, Datenänderungen zuzulassen, wenn bgsave einen Snapshot erstellt?

Xiao Zhang: (Warum fragst du immer noch ... Ich weiß nicht wie!)

Ähm, da bin ich mir nicht sicher ...

Interviewer:

Hier verwenden wir hauptsächlich bgsave Durch den Unter-Thread von Code> implementiert, sind die spezifischen Vorgänge wie folgt: <code>bgsave的子线程实现的,具体操作如下:

如果主线程执行读操作,则主线程和 bgsave 子进程互相不影响;

如果主线程执行写操作,则被修改的数据会复制一份副本,然后 bgsave

Wenn der Haupt-Thread eine Leseoperation ausführt, führen der Haupt-Thread und der Unterprozess bgsave dies nicht aus sich gegenseitig beeinflussen;

12 wichtige Punkte, die in Redis-Interviews häufig gefragt werden (mit Antworten)Wenn der Hauptthread einen Schreibvorgang ausführt, wird eine Kopie der geänderten Daten erstellt, und dann schreibt der Unterprozess bgsave die kopierten Daten in die RDB Während dieses Vorgangs kann der Hauptthread die Originaldaten weiterhin direkt ändern.

Es ist zu beachten, dass die Ausführungshäufigkeit von Redis auf RDB sehr wichtig ist, da dies die Integrität der Snapshot-Daten und die Stabilität von Redis beeinträchtigt. Daher wird nach Redis 4.0 ein Datenpersistenzmechanismus von

AOF und RDB eingeführt Hybrid wurde hinzugefügt

: Schreiben Sie die Daten in Form von RDB in die Datei und speichern Sie dann die nachfolgenden Betriebsbefehle in der Datei im AOF-Format, was nicht nur die Neustartgeschwindigkeit von Redis gewährleistet, sondern auch das Datenrisiko verringert Verlust.

Xiao Zhang:

Ich habe gelernt, ich habe gelernt.

Interviewer:

Können Sie mir dann sagen, wie Redis eine hohe Verfügbarkeit erreicht?

Xiao Zhang:

Es gibt drei Hauptmethoden, um eine hohe Verfügbarkeit in Redis zu erreichen: Master-Slave-Replikation, Sentinel-Modus und Redis-Cluster.

Master-Slave-Replikation

12 wichtige Punkte, die in Redis-Interviews häufig gefragt werden (mit Antworten)Synchronisieren Sie Daten von einem früheren Redis-Server mit mehreren Slave-Redis-Servern, also einem Master-Slave-Modell. Dies ist das gleiche Prinzip wie die MySQL-Master-Slave-Replikation.

Sentinel-Modus

12 wichtige Punkte, die in Redis-Interviews häufig gefragt werden (mit Antworten)Bei Verwendung des Redis-Master-Slave-Dienstes tritt ein Problem auf, das heißt, wenn der Redis-Master-Slave-Server ausfällt und ausfällt, muss er manuell wiederhergestellt werden Um dieses Problem zu lösen, hat Redis den Sentry-Modus hinzugefügt (da der Sentinel-Modus die Master- und Slave-Server überwachen und automatische Notfallwiederherstellungsfunktionen bereitstellen kann).

Redis-Cluster (Cluster)

12 wichtige Punkte, die in Redis-Interviews häufig gefragt werden (mit Antworten)Redis-Cluster ist eine in Redis 3.0 eingeführte Redis-Cluster-Lösung. Dadurch wird die Abhängigkeit des Systems von einem reduziert einzelnen Masterknoten, wodurch die Lese- und Schreibleistung des Redis-Dienstes verbessert wird.

Interviewer:

Im Sentinel-Modus gibt es eine Kopie der Daten, um die Daten sicherzustellen, und es gibt eine Sentinel-Überwachung der Verfügbarkeit. Sobald der Master-Knoten ausfällt, wird der Slave-Knoten zum Master-Knoten gewählt . Das hat unsere Produktionsumgebung zufrieden gestellt. Ja,

Warum müssen Sie also immer noch den Cluster-Modus verwenden?

Xiao Zhang:

Nun, der Sentinel-Modus ist immer noch ein Master-Slave-Knoten. Im Master-Slave-Modus können wir die Lese-Parallelitätsfähigkeit durch Hinzufügen von Salve-Knoten erweitern, aber es gibt keine Möglichkeit, die Schreibfähigkeit zu erweitern und Speicherkapazität Die Speicherkapazität kann nur die Obergrenze sein, die der Masterknoten tragen kann. Um die Schreib- und Speicherfunktionen zu erweitern, müssen wir daher den Cluster-Modus einführen.

Interviewer:

Es gibt so viele Master-Knoten im Cluster. Wie bestimmt der Redis-Cluster, welcher Knoten beim Speichern ausgewählt werden soll?

Xiao Zhang:

Hier sollte eine Art Hash-Algorithmus verwendet werden, aber ich bin mir nicht sicher. . . 🎜🎜Interviewer:🎜

Okay, das war's für das heutige Interview. Du gehst zurück und wartest auf unsere Interviewbenachrichtigung.

Xiao Zhang:

Okay, danke Interviewer, können Sie mir sagen, wie der Redis-Cluster die Knotenauswahl implementiert?

Interviewer:

Redis Cluster verwendet einen konsistenten Hashing-Algorithmus zur Implementierung der Knotenauswahl Was ein konsistenter Hashing-Algorithmus ist, können Sie noch einmal selbst sehen.

Redis-Cluster unterteilt sich in 16384 Slots. Jedes Schlüssel-Wert-Paar wird entsprechend seinem Schlüssel in zwei Schritte unterteilt.

  • Berechnen Sie einen 16-Bit-Wert basierend auf dem Schlüssel des Schlüssel-Wert-Paares gemäß dem CRC16-Algorithmus.

  • Verwenden Sie dann den 16-Bit-Wert, um 16384 zu modulieren, um einen Modul im Bereich von 0 bis 16383 zu erhalten. Jeder Modul stellt einen Hash-Slot mit einer entsprechenden Zahl dar.

Jeder Redis-Knoten ist für die Verarbeitung eines Teils der Slots verantwortlich. Wenn Sie drei Masterknoten ABC hinzufügen, sind die Slots, für die jeder Knoten verantwortlich ist, wie folgt:

12 wichtige Punkte, die in Redis-Interviews häufig gefragt werden (mit Antworten)

Auf diese Weise erfolgt die Auswahl der Clusterknoten realisiert.

Empfohlenes Lernen: „Redis-Video-Tutorial“, „2022 neueste Fragen und Antworten zu Redis-Interviews

Das obige ist der detaillierte Inhalt von12 wichtige Punkte, die in Redis-Interviews häufig gefragt werden (mit Antworten). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So erstellen Sie den Redis -Clustermodus So erstellen Sie den Redis -Clustermodus Apr 10, 2025 pm 10:15 PM

Der Redis -Cluster -Modus bietet Redis -Instanzen durch Sharding, die Skalierbarkeit und Verfügbarkeit verbessert. Die Bauschritte sind wie folgt: Erstellen Sie ungerade Redis -Instanzen mit verschiedenen Ports; Erstellen Sie 3 Sentinel -Instanzen, Monitor -Redis -Instanzen und Failover; Konfigurieren von Sentinel -Konfigurationsdateien, Informationen zur Überwachung von Redis -Instanzinformationen und Failover -Einstellungen hinzufügen. Konfigurieren von Redis -Instanzkonfigurationsdateien, aktivieren Sie den Cluster -Modus und geben Sie den Cluster -Informationsdateipfad an. Erstellen Sie die Datei nodes.conf, die Informationen zu jeder Redis -Instanz enthält. Starten Sie den Cluster, führen Sie den Befehl erstellen aus, um einen Cluster zu erstellen und die Anzahl der Replikate anzugeben. Melden Sie sich im Cluster an, um den Befehl cluster info auszuführen, um den Clusterstatus zu überprüfen. machen

So verwenden Sie den Befehl Redis So verwenden Sie den Befehl Redis Apr 10, 2025 pm 08:45 PM

Die Verwendung der REDIS -Anweisung erfordert die folgenden Schritte: Öffnen Sie den Redis -Client. Geben Sie den Befehl ein (Verbschlüsselwert). Bietet die erforderlichen Parameter (variiert von der Anweisung bis zur Anweisung). Drücken Sie die Eingabetaste, um den Befehl auszuführen. Redis gibt eine Antwort zurück, die das Ergebnis der Operation anzeigt (normalerweise in Ordnung oder -err).

So starten Sie den Server mit Redis So starten Sie den Server mit Redis Apr 10, 2025 pm 08:12 PM

Zu den Schritten zum Starten eines Redis -Servers gehören: Installieren von Redis gemäß dem Betriebssystem. Starten Sie den Redis-Dienst über Redis-Server (Linux/macOS) oder redis-server.exe (Windows). Verwenden Sie den Befehl redis-cli ping (linux/macOS) oder redis-cli.exe ping (Windows), um den Dienststatus zu überprüfen. Verwenden Sie einen Redis-Client wie Redis-Cli, Python oder Node.js, um auf den Server zuzugreifen.

So verwenden Sie Redis Lock So verwenden Sie Redis Lock Apr 10, 2025 pm 08:39 PM

Um die Operationen zu sperren, muss die Sperre durch den Befehl setNX erfasst werden und dann den Befehl Ablauf verwenden, um die Ablaufzeit festzulegen. Die spezifischen Schritte sind: (1) Verwenden Sie den Befehl setNX, um zu versuchen, ein Schlüsselwertpaar festzulegen; (2) Verwenden Sie den Befehl Ablauf, um die Ablaufzeit für die Sperre festzulegen. (3) Verwenden Sie den Befehl Del, um die Sperre zu löschen, wenn die Sperre nicht mehr benötigt wird.

So implementieren Sie die zugrunde liegenden Redis So implementieren Sie die zugrunde liegenden Redis Apr 10, 2025 pm 07:21 PM

Redis verwendet Hash -Tabellen, um Daten zu speichern und unterstützt Datenstrukturen wie Zeichenfolgen, Listen, Hash -Tabellen, Sammlungen und geordnete Sammlungen. Ernähren sich weiterhin über Daten über Snapshots (RDB) und appendiert Mechanismen nur Schreibmechanismen. Redis verwendet die Master-Slave-Replikation, um die Datenverfügbarkeit zu verbessern. Redis verwendet eine Ereignisschleife mit einer Thread, um Verbindungen und Befehle zu verarbeiten, um die Datenatomizität und Konsistenz zu gewährleisten. Redis legt die Ablaufzeit für den Schlüssel fest und verwendet den faulen Löschmechanismus, um den Ablaufschlüssel zu löschen.

So lesen Sie Redis -Warteschlange So lesen Sie Redis -Warteschlange Apr 10, 2025 pm 10:12 PM

Um eine Warteschlange aus Redis zu lesen, müssen Sie den Warteschlangenname erhalten, die Elemente mit dem Befehl LPOP lesen und die leere Warteschlange verarbeiten. Die spezifischen Schritte sind wie folgt: Holen Sie sich den Warteschlangenname: Nennen Sie ihn mit dem Präfix von "Warteschlange:" wie "Warteschlangen: My-Queue". Verwenden Sie den Befehl LPOP: Wischen Sie das Element aus dem Kopf der Warteschlange aus und geben Sie seinen Wert zurück, z. B. die LPOP-Warteschlange: my-queue. Verarbeitung leerer Warteschlangen: Wenn die Warteschlange leer ist, gibt LPOP NIL zurück, und Sie können überprüfen, ob die Warteschlange existiert, bevor Sie das Element lesen.

So lesen Sie den Quellcode von Redis So lesen Sie den Quellcode von Redis Apr 10, 2025 pm 08:27 PM

Der beste Weg, um Redis -Quellcode zu verstehen, besteht darin, Schritt für Schritt zu gehen: Machen Sie sich mit den Grundlagen von Redis vertraut. Wählen Sie ein bestimmtes Modul oder eine bestimmte Funktion als Ausgangspunkt. Beginnen Sie mit dem Einstiegspunkt des Moduls oder der Funktion und sehen Sie sich die Codezeile nach Zeile an. Zeigen Sie den Code über die Funktionsaufrufkette an. Kennen Sie die von Redis verwendeten Datenstrukturen. Identifizieren Sie den von Redis verwendeten Algorithmus.

So löschen Sie Redis -Daten So löschen Sie Redis -Daten Apr 10, 2025 pm 10:06 PM

So löschen Sie Redis -Daten: Verwenden Sie den Befehl Flushall, um alle Schlüsselwerte zu löschen. Verwenden Sie den Befehl flushdb, um den Schlüsselwert der aktuell ausgewählten Datenbank zu löschen. Verwenden Sie SELECT, um Datenbanken zu wechseln, und löschen Sie dann FlushDB, um mehrere Datenbanken zu löschen. Verwenden Sie den Befehl del, um einen bestimmten Schlüssel zu löschen. Verwenden Sie das Redis-Cli-Tool, um die Daten zu löschen.

See all articles