2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Um alle auf dem Weg zum Vorstellungsgespräch zu unterstützen, haben wir für Studierende, die sich noch nicht sicher sind, was Redis betrifft, 40 häufige Redis-Interviewfragen zusammengestellt, damit Sie während des Vorstellungsgesprächs nicht in Panik geraten und sich um das Angebot bemühen müssen!
1. Was ist Redis?
Redis ist vollständig Open Source und kostenlos, entspricht dem BSD-Protokoll und ist eine leistungsstarke Schlüsselwertdatenbank.
Redis weist im Vergleich zu anderen Schlüsselwert-Caching-Produkten die folgenden drei Merkmale auf:
Redis unterstützt die Datenpersistenz. Es kann die Daten im Speicher auf der Festplatte speichern und zur Verwendung beim Neustart erneut laden.
Redis unterstützt nicht nur einfache Daten vom Typ Schlüsselwert, sondern bietet auch die Speicherung von Datenstrukturen wie Liste, Satz, Zset und Hash.
Redis unterstützt die Datensicherung, also die Datensicherung im Master-Slave-Modus.
Vorteile von Redis:
Extrem hohe Leistung: Redis kann mit einer Geschwindigkeit von 110.000 Mal/s lesen und mit einer Geschwindigkeit von 81.000 Mal/s schreiben.
Umfangreiche Datentypen: Redis unterstützt Datentypoperationen vom Typ Strings, Listen, Hashes, Mengen und geordnete Mengen in binären Fällen.
Atomar: Alle Vorgänge in Redis sind atomar, was bedeutet, dass sie entweder erfolgreich ausgeführt werden oder überhaupt nicht ausgeführt werden. Einzelne Operationen sind atomar. Mehrere Operationen unterstützen auch Transaktionen, d. h. Atomizität, die durch die Anweisungen MULTI und EXEC umschlossen werden.
Umfangreiche Funktionen: Redis unterstützt auch Publish/Subscribe, Benachrichtigungen, Schlüsselablauf und andere Funktionen.
Wie unterscheidet sich Redis von anderen Key-Value-Stores?
Redis verfügt über komplexere Datenstrukturen und bietet atomare Operationen für diese. Dies ist ein Evolutionspfad, der sich von anderen Datenbanken unterscheidet. Die Datentypen von Redis basieren auf grundlegenden Datenstrukturen und sind für Programmierer transparent, ohne dass zusätzliche Abstraktionen erforderlich sind.
Redis wird im Speicher ausgeführt, kann jedoch auf der Festplatte gespeichert werden. Beim Hochgeschwindigkeitslesen und -schreiben verschiedener Datensätze muss daher ein Speicherkompromiss entstehen, da die Datenmenge nicht größer als der Hardwarespeicher sein darf. Ein weiterer Vorteil von In-Memory-Datenbanken besteht darin, dass der Betrieb im Speicher im Vergleich zu denselben komplexen Datenstrukturen auf der Festplatte sehr einfach ist, sodass Redis viele Dinge mit hoher interner Komplexität erledigen kann. Außerdem sind sie im Hinblick auf das Festplattenformat kompakt und werden durch Anhängen generiert, da sie keinen wahlfreien Zugriff erfordern.
2. Was sind die Datentypen von Redis?
Redis unterstützt fünf Datentypen: String (String), Hash (Hash), Liste (Liste), Set (Satz) und zsetsorted Set (geordneter Satz).
Die in unseren tatsächlichen Projekten am häufigsten verwendeten sind String und Hash. Wenn Sie ein fortgeschrittener und fortgeschrittener Redis-Benutzer sind, müssen Sie auch die folgenden Datenstrukturen HyperLogLog, Geo und Pub/Sub hinzufügen.
Wenn Sie sagen, dass Sie auch mit Redis-Modulen wie BloomFilter, RedisSearch und Redis-ML gespielt haben, werden die Augen des Interviewers leuchten.
3. Welche Vorteile bietet die Verwendung von Redis?
Es ist schnell, da 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 O1 ist.
Unterstützt umfangreiche Datentypen, einschließlich String, Liste, Set, Zset, Hash usw.
Unterstützt Transaktionen und Operationen sind alle atomar. Die sogenannte Atomizität bedeutet, dass alle Änderungen an den Daten entweder ausgeführt werden oder überhaupt nicht.
Umfangreiche Funktionen, können zum Caching, Versenden von Nachrichten und zum Festlegen der Ablaufzeit per Schlüssel verwendet werden. Nach Ablauf wird es automatisch gelöscht
4. Was sind die Vorteile von Redis im Vergleich zu Memcached?
Alle Werte in Memcached sind einfache Zeichenfolgen, und Redis unterstützt als Ersatz umfangreichere Datenklassen.
Redis ist viel schneller als Memcached
Redis kann seine Daten beibehalten
5. Was sind die Unterschiede zwischen Memcache und Redis?
Die Speichermethode Memecache speichert alle Daten im Speicher. Sie bleibt nach einem Stromausfall hängen. Die Daten dürfen die Speichergröße nicht überschreiten. Redis wird teilweise auf der Festplatte gespeichert, was die Haltbarkeit der Daten gewährleistet.
Datenunterstützungstypen Die Unterstützung von Datentypen durch Memcache ist relativ einfach. Redis verfügt über komplexe Datentypen.
Die verwendeten zugrunde liegenden Modelle unterscheiden sich in ihren zugrunde liegenden Implementierungsmethoden und Anwendungsprotokollen für die Kommunikation mit Clients. Redis baut direkt seinen eigenen VM-Mechanismus auf, denn wenn das allgemeine System Systemfunktionen aufruft, verschwendet es eine gewisse Zeit zum Verschieben und Anfordern.
6. Ist Redis Single-Process und Single-Threaded?
Redis ist ein einzelner Prozess und ein einzelner Thread. Redis nutzt die Warteschlangentechnologie, um gleichzeitigen Zugriff in seriellen Zugriff umzuwandeln, wodurch der Overhead der herkömmlichen seriellen Datenbanksteuerung entfällt.
7. Wie hoch ist die maximale Kapazität eines String-Smart-Storage?
512 Mio.
8. Was ist der Persistenzmechanismus von Redis? Was sind die Vor- und Nachteile jedes einzelnen?
Redis bietet zwei Persistenzmechanismen, RDB- und AOF-Mechanismen:
RDB-Persistenzmethode (Redis DataBase): Bezieht sich auf die Aufzeichnung aller Schlüssel-Wert-Paare der Redis-Datenbank in einem semi-persistenten Modus mithilfe eines Datensatz-Snapshots und das Schreiben der Daten zu einem bestimmten Zeitpunkt nach der Persistenz Wenn dies abgeschlossen ist, verwenden Sie Folgendes: Die temporäre Datei ersetzt die zuletzt gespeicherte Datei, um eine Datenwiederherstellung zu erreichen.
Vorteil:
Es gibt nur eine Datei dump.rdb, was für die Persistenz praktisch ist.
Die Katastrophentoleranz ist gut, eine Datei kann auf einer sicheren Festplatte gespeichert werden.
Um die Leistung zu maximieren, verzweigen Sie den untergeordneten Prozess, um den Schreibvorgang abzuschließen, und ermöglichen Sie dem Hauptprozess, weiterhin Befehle zu verarbeiten, sodass die E/A maximiert wird. Verwenden Sie einen separaten Unterprozess für die Persistenz, und der Hauptprozess führt keine E/A-Vorgänge aus, um die hohe Leistung von Redis sicherzustellen.
Wenn der Datensatz groß ist, ist die Starteffizienz höher als bei AOF.
Nachteile: geringe Datensicherheit. RDB wird in bestimmten Abständen beibehalten. Wenn Redis während der Persistenz fehlschlägt, kommt es zu Datenverlust.Daher ist diese Methode besser geeignet, wenn die Datenanforderungen nicht streng sind.
AOF-Persistenzmethode (Append-only file): Bedeutet, dass alle Befehlszeilendatensätze vollständig dauerhaft gespeichert und als AOF-Dateien im Format des Redis-Befehlsanforderungsprotokolls gespeichert werden.
Vorteil:
Aus Gründen der Datensicherheit kann die AOF-Persistenz mit dem appendfsync-Attribut konfiguriert werden. Wenn dies immer der Fall ist, wird jede Befehlsoperation in der AOF-Datei aufgezeichnet.
Durch das Schreiben von Dateien im Anhängemodus kann das Datenkonsistenzproblem mithilfe des Redis-Check-Aof-Tools gelöst werden, selbst wenn der Server mittendrin ausfällt.
Der Umschreibemodus des AOF-Mechanismus. Bevor die AOF-Datei neu geschrieben wird (Befehle werden zusammengeführt und neu geschrieben, wenn die Datei zu groß ist), können Sie einige der Befehle löschen (z. B. „Flushall“, der versehentlich ausgeführt wurde).
Mangel:
AOF-Dateien sind größer als RDB-Dateien und lassen sich langsamer wiederherstellen.
Wenn der Datensatz groß ist, ist die Starteffizienz geringer als bei RDB.
9. Redis häufige Leistungsprobleme und Lösungen
Der Master schreibt am besten keine Speicher-Snapshots. Der Speicherbefehl plant die rdbSave-Funktion, die die Arbeit des Haupt-Threads blockiert Der Dienst wird zeitweise ausgesetzt.
Wenn die Daten wichtig sind, aktiviert ein Slave die AOF-Datensicherung und die Richtlinie ist so eingestellt, dass ein Daten pro Sekunde synchronisiert wird.
Für die Geschwindigkeit der Master-Slave-Replikation und die Stabilität der Verbindung ist es am besten, wenn sich Master und Slave im selben LAN befinden.
Vermeiden Sie das Hinzufügen von Slaves zu einer überlasteten Master-Datenbank.
Verwenden Sie keine Diagrammstruktur für die Master-Slave-Replikation. Es ist stabiler, eine einseitig verknüpfte Listenstruktur zu verwenden, das heißt: Master