In diesem Artikel werden 40 Redis-Interviewfragen mit Ihnen geteilt, einschließlich Antwortanalyse und Mindmaps der Redis-Wissenspunkte. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
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-Cache-Produkten die folgenden drei Merkmale auf:
(1) Redis unterstützt die Datenpersistenz und kann Daten im Speicher auf der Festplatte speichern und zur Verwendung beim Neustart erneut laden.
(2) Redis unterstützt nicht nur einfache Daten vom Typ Schlüsselwert, sondern bietet auch die Speicherung von Datenstrukturen wie Liste, Satz, Zset und Hash.
(3) Redis unterstützt die Datensicherung, also die Datensicherung im Master-Slave-Modus.
[Verwandte Empfehlungen: Redis-Video-Tutorial]
Vorteile von Redis
(1) Extrem hohe Leistung – Redis kann mit einer Geschwindigkeit von 110.000 Mal/s lesen und mit einer Geschwindigkeit von 81.000 Mal/s schreiben.
(2) Umfangreiche Datentypen – Redis unterstützt Datentypoperationen vom Typ Strings, Listen, Hashes, Mengen und geordnete Mengen für binäre Fälle.
(3) Atomar – Alle Operationen von Redis sind atomar, was bedeutet, dass sie entweder erfolgreich ausgeführt werden oder gar nicht ausgeführt werden, wenn sie fehlschlagen. Einzelne Operationen sind atomar. Mehrere Operationen unterstützen auch Transaktionen, d. h. Atomizität, die durch die Anweisungen MULTI und EXEC umschlossen werden.
(4) Umfangreiche Funktionen – Redis unterstützt auch Publish/Subscribe, Benachrichtigungen, Schlüsselablauf und andere Funktionen.
Wie unterscheidet sich Redis von anderen Key-Value-Stores?
(1) Redis verfügt über komplexere Datenstrukturen und bietet atomare Operationen für diese. Dies ist ein evolutionärer Weg, 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.
(2) Redis wird im Speicher ausgeführt, kann jedoch auf der Festplatte gespeichert werden. Daher muss der Speicher abgewogen werden, wenn verschiedene Datensätze mit hoher Geschwindigkeit gelesen und geschrieben werden, 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.
Antwort: 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 Redis-Benutzer sind, müssen Sie auch die folgenden Datenstrukturen hinzufügen: HyperLogLog, Geo und Pub/Sub.
Wenn Sie sagen, dass Sie mit Redis-Modulen wie BloomFilter, RedisSearch und Redis-ML gespielt haben, beginnen die Augen des Interviewers zu leuchten.
(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 O1) ist.
(2) Es unterstützt umfangreiche Datentypen, einschließlich Zeichenfolgen , list und set.
(3) Unterstützungstransaktionen und Operationen sind alle atomar. Die sogenannte Atomizität bedeutet, dass alle Änderungen an den Daten entweder ausgeführt werden oder überhaupt nicht
(4 ) Umfangreiche Funktionen: Kann zum Zwischenspeichern und für Nachrichten verwendet werden. Drücken Sie die Taste, um die Ablaufzeit festzulegen. Nach Ablauf wird es automatisch gelöscht.
(1) Alle Werte in Memcached sind einfache Zeichenfolgen, und Redis als Ersatz unterstützt umfangreichere Datentypen.
(2) Redis ist viel schneller als Memcached.
(3) Redis kann seine Daten dauerhaft transformieren
(1) Speichermethode Memecache speichert alle Daten im Speicher. Nach einem Stromausfall bleibt der Datenspeicher hängen. Redis wird teilweise auf der Festplatte gespeichert, was die Datenpersistenz gewährleistet.
(2) Datenunterstützungstypen Die Unterstützung von Datentypen durch Memcache ist relativ einfach. Redis verfügt über komplexe Datentypen.
(3) Die verwendeten zugrunde liegenden Modelle sind unterschiedlich, die zugrunde liegenden Implementierungsmethoden und die Anwendungsprotokolle für die Kommunikation mit dem Client sind unterschiedlich. Redis baut direkt seinen eigenen VM-Mechanismus auf, denn wenn das allgemeine System Systemfunktionen aufruft, verschwendet es eine gewisse Zeit zum Verschieben und Anfordern.
Antwort: 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.
Antwort: 512M
Redis bietet zwei Persistenzmechanismen: RDB- und AOF-Mechanismen:
1. RDBRedis DataBase) Persistenzmodus:
bezieht sich auf den semipersistenten Modus (unter Verwendung von Datensatz-Snapshots), um alle Schlüssel-Wert-Paare der Redis-Datenbank aufzuzeichnen. Schreiben Sie Daten zu einem bestimmten Zeitpunkt in eine temporäre Datei. Verwenden Sie nach Abschluss der Persistenz diese temporäre Datei, um die letzte persistente Datei zu ersetzen und eine Datenwiederherstellung zu erreichen.
Vorteile:
(1) Es gibt nur eine Datei dump.rdb, was für die Persistenz praktisch ist.
(2) Gute Katastrophentoleranz, eine Datei kann auf einer sicheren Festplatte gespeichert werden.
(3) Um die Leistung zu maximieren, verzweigen Sie den untergeordneten Prozess, um den Schreibvorgang abzuschließen, und lassen Sie den Hauptprozess weiterhin Befehle 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.)
(4) 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 zwischen der Persistenz fehlschlägt. Daher ist diese Methode besser geeignet, wenn die Datenanforderungen nicht streng sind als AOF-Dateien gespeichert.
Vorteile:
(1) Datensicherheit, AOF-Persistenz kann mit dem appendfsync-Attribut konfiguriert werden, wobei jede Befehlsoperation immer in der AOF-Datei aufgezeichnet wird.
(2) Schreiben Sie Dateien im Anhängemodus. Selbst wenn der Server mittendrin ausfällt, können Sie das Datenkonsistenzproblem mit dem Redis-Check-Aof-Tool lösen.
(3) Rewrite-Modus 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“ aus Versehen))
Nachteile:
(1) AOF-Dateien sind größer als RDB-Dateien und die Wiederherstellungsgeschwindigkeit ist langsam.
(2) Wenn der Datensatz groß ist, ist die Starteffizienz geringer als bei RDB.
9. Redis häufige Leistungsprobleme und Lösungen:(3) Um die Master-Slave-Replikation zu beschleunigen. Um die Stabilität der Verbindung zu gewährleisten, ist es am besten, wenn sich Master und Slave im selben LAN befinden.
(4) Versuchen Sie zu vermeiden, dem überlasteten Master Slaves hinzuzufügen Bibliothek
(5) Verwenden Sie keine Diagrammstrukturen für die Master-Slave-Replikation, sondern verwenden Sie einseitig verknüpfte Listen. Die Struktur ist stabiler, das heißt: Master <- Slave1<- Slave2 <- Slave3 ... Diese Struktur ist praktisch, um das Problem des Single-Point-Fehlers zu lösen und den Ersatz des Masters durch den Slave zu realisieren. Wenn der Master auflegt, können Sie Slave1 sofort als Master aktivieren und alles andere unverändert lassen.
10. Was ist die Löschstrategie für abgelaufene Redis-Schlüssel?(3) Regelmäßiges Löschen: Von Zeit zu Zeit überprüft das Programm die Datenbank und löscht die darin enthaltenen abgelaufenen Schlüssel. Es liegt am Algorithmus, zu entscheiden, wie viele abgelaufene Schlüssel gelöscht und wie viele Datenbanken überprüft werden sollen.
11. Redis-Recyclingstrategie (Eliminierungsstrategie)?volatile-random: Wählen Sie den Datensatz mit festgelegter Ablaufzeit aus (server.db[i].expires) .db[i]. läuft ab)
allkeys-lru: Wählen Sie die zuletzt verwendeten Daten aus dem Datensatz (server.db[i].dict) aus, um sie zu entfernen
allkeys-random: Aus dem Datensatz (server.db [i] .dict) No-Enviction (Räumung): Verbietet die Räumung von Daten
Beachten Sie die 6 Mechanismen hier: Volatile und Allkeys geben an, ob Daten aus dem Datensatz mit einer festgelegten Ablaufzeit oder aus allen Datensätzen entfernt werden sollen Daten, die folgenden lru, ttl und random sind drei verschiedene Eliminierungsstrategien sowie eine No-Enviction-Strategie, die niemals recycelt wird.
Verwenden Sie Richtlinienregeln:
(1) Wenn die Daten eine Potenzgesetzverteilung aufweisen, d stellt eine Gleichverteilung dar, d. h. wenn alle Datenzugriffshäufigkeiten gleich sind, verwenden Sie allkeys-random
Antwort: Um die schnellste Lese- und Schreibgeschwindigkeit zu erreichen, liest Redis alle Daten in den Speicher und schreibt die Daten asynchron auf die Festplatte. Redis zeichnet sich also durch hohe Geschwindigkeit und Datenpersistenz aus. Wenn die Daten nicht im Speicher abgelegt werden, beeinträchtigt die E/A-Geschwindigkeit der Festplatte die Leistung von Redis erheblich. Heutzutage, da Speicher immer billiger wird, wird Redis immer beliebter. Wenn der maximal verwendete Speicher eingestellt ist, können keine neuen Werte eingefügt werden, nachdem die Anzahl der vorhandenen Datensätze das Speicherlimit erreicht hat.
Antwort: Redis kann Master-Slave-Synchronisation und Slave-Slave-Synchronisation verwenden. Während der ersten Synchronisierung führt der Primärknoten eine BGSAVE durch und zeichnet nachfolgende Änderungsvorgänge im Speicherpuffer auf. Nach Abschluss wird die gesamte RDB-Datei mit dem Replikatknoten synchronisiert. Nachdem der Replikatknoten die Daten akzeptiert hat, wird das RDB-Image geladen in die Erinnerung. Nach Abschluss des Ladevorgangs wird der Masterknoten benachrichtigt, die während des Zeitraums geänderten Vorgangsdatensätze zur Wiedergabe mit dem Replikatknoten zu synchronisieren, und der Synchronisierungsprozess ist abgeschlossen.
Antwort: Die Zeit mehrerer IO-Roundtrips kann auf einen reduziert werden, sofern kein kausaler Zusammenhang zwischen den von der Pipeline ausgeführten Anweisungen besteht. Bei der Verwendung von Redis-Benchmark für Stresstests kann festgestellt werden, dass die Anzahl der Pipeline-Batch-Anweisungen ein wichtiger Faktor ist, der den QPS-Spitzenwert von Redis beeinflusst.
(1) Redis Sentinal konzentriert sich auf hohe Verfügbarkeit. Wenn der Master ausfällt, wird der Slave automatisch zum Master befördert und stellt weiterhin Dienste bereit.
(2) Redis-Cluster konzentriert sich auf Skalierbarkeit. Wenn ein einzelner Redis-Speicher nicht ausreicht, wird Cluster für Shard-Speicher verwendet.
Antwort: Wenn in einem Cluster mit drei Knoten A, B und C ohne Replikationsmodell Knoten B ausfällt, geht der gesamte Cluster davon aus, dass ihm Steckplätze im Bereich von 5501–11000 fehlen und er nicht verfügbar ist.
Antwort: Redisson, Jedis, Salat usw. Redisson wird offiziell empfohlen.
Antwort: Jedis ist ein von Redis in Java implementierter Client, dessen API relativ umfassende Unterstützung für Redis-Befehle bietet. Im Vergleich zu Jedis sind seine Funktionen einfacher und unterstützen keine Zeichenfolgenoperationen unterstützt keine Redis-Funktionen wie Sortieren, Transaktionen, Pipelines und Partitionen.
Der Zweck von Redisson besteht darin, die Trennung der Benutzeranliegen von Redis zu fördern, damit sich Benutzer mehr auf die Verarbeitung der Geschäftslogik konzentrieren können.
Passwort festlegen: config set requirepass 123456
Autorisierungspasswort: auth 123456
Antwort: Der Redis-Cluster verwendet kein konsistentes Hashing, sondern führt das Konzept der Hash-Slots ein. Jeder Schlüssel besteht die CRC16-Prüfung und Modulo 16384, um zu bestimmen, welcher Slot im platziert werden soll Cluster ist für einen Teil der Hash-Slots verantwortlich.
Antwort: Um den Cluster weiterhin verfügbar zu machen, wenn einige Knoten ausfallen oder die meisten Knoten nicht kommunizieren können, verwendet der Cluster ein Master-Slave-Replikationsmodell und jeder Knoten verfügt über N-1-Replikate
Antwort: Redis garantiert keine starke Datenkonsistenz, was bedeutet, dass der Cluster in der Praxis unter bestimmten Bedingungen Schreibvorgänge verlieren kann.
Antwort: Asynchrone Replikation
Antwort: 16384.
Antwort: Der Redis-Cluster kann derzeit keine Datenbank auswählen und der Standardwert ist Datenbank 0.
Antwort: Verwenden Sie den Ping-Befehl.
Antwort:
(1) Eine Transaktion ist eine einzelne isolierte Operation: Alle Befehle in der Transaktion werden serialisiert und der Reihe nach ausgeführt. Während der Ausführung der Transaktion wird diese nicht durch Befehlsanfragen anderer Clients unterbrochen.
(2) Eine Transaktion ist eine atomare Operation: Entweder werden alle Befehle in der Transaktion ausgeführt, oder keiner von ihnen wird ausgeführt.
Antwort: MULTI, EXEC, DISCARD, WATCH
Antwort: EXPIRE- und PERSIST-Befehle.
Antwort: Eine Hash-Tabelle (d. h. die in einer Hash-Tabelle gespeicherte Zahl ist klein) benötigt sehr wenig Speicher, daher sollten Sie Ihr Datenmodell so weit wie möglich in eine Hash-Tabelle abstrahieren. Wenn in Ihrem Websystem beispielsweise ein Benutzerobjekt vorhanden ist, legen Sie keinen separaten Schlüssel für den Namen, den Nachnamen, die E-Mail-Adresse und das Passwort des Benutzers fest. Speichern Sie stattdessen alle Informationen des Benutzers in einer Hash-Tabelle.
A: Ein Client hat einen neuen Befehl ausgeführt und neue Daten hinzugefügt. Redi prüft die Speichernutzung, wenn sie größer als das maximale Speicherlimit ist, wird sie gemäß der festgelegten Richtlinie recycelt. Ein neuer Befehl wird ausgeführt usw. Wir überschreiten also ständig die Grenze der Speichergrenze, indem wir ständig die Grenze erreichen und dann ständig unter die Grenze zurückkehren. Wenn das Ergebnis eines Befehls dazu führt, dass viel Speicher beansprucht wird (z. B. das Speichern der Schnittmenge einer großen Menge in einem neuen Schlüssel), dauert es nicht lange, bis das Speicherlimit durch diese Speichernutzung überschritten wird.
Antwort: Wenn Sie eine 32-Bit-Redis-Instanz verwenden, können Sie Sammlungstypdaten wie Hash, Liste, sortierter Satz, Satz usw. gut nutzen, da es normalerweise viele kleine Schlüsselwerte geben kann kompakter zusammen gespeichert werden.
Antwort: Wenn die festgelegte Obergrenze erreicht ist, gibt der Redis-Schreibbefehl eine Fehlermeldung zurück (der Lesebefehl kann jedoch weiterhin normal zurückgegeben werden). Sie können Redis auch als Cache verwenden, um den Konfigurationseliminierungsmechanismus zu verwenden Erreicht die Speicherobergrenze, wird der Inhalt geleert. Entfernen Sie den alten Inhalt.
A: Theoretisch kann Redis bis zu 232 Schlüssel verarbeiten, und in tatsächlichen Tests speicherte jede Instanz mindestens 250 Millionen Schlüssel. Wir testen einige größere Werte. Jede Liste, Menge und sortierte Menge kann 232 Elemente enthalten. Mit anderen Worten: Das Speicherlimit von Redis ist die Menge an Speicher, die im System verfügbar ist.
Antwort: Wenn die Größe des Redis-Speicherdatensatzes auf eine bestimmte Größe ansteigt, wird die Dateneliminierungsstrategie implementiert.
Verwandtes Wissen: Redis bietet 6 Dateneliminierungsstrategien:
volatile-lru: Wählen Sie die zuletzt verwendeten Daten aus dem Datensatz (server.db[i].expires) mit einer Ablaufzeit aus, um sie zu eliminieren
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 (server.db[i] aus .expires) Wählen Sie beliebige Daten aus dem zu eliminierenden Datensatz aus
allkeys-lru: Wählen Sie die zuletzt verwendeten Daten aus dem zu eliminierenden Datensatz (server.db[i].dict) aus
allkeys-random: Wählen Sie die Daten aus Wählen Sie aus dem Datensatz (server.db[i].dict) willkürlich die Dateneliminierung aus. Keine Enviction (Räumung): Verbieten Sie die Räumung von Daten. Für welches Szenario ist Redis am besten geeignet?
1. SitzungscacheRedis 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. Um also die Top-10-Benutzer aus der sortierten Menge zu erhalten – nennen wir sie „user_scores“, müssen wir es einfach so machen: Dies setzt natürlich voraus, dass Sie es basierend auf den Bewertungen Ihrer Benutzer tun. Zunehmende Sortierung. 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. Dies können Sie hier sehen.
5. Publish/Subscribe
Last (aber sicherlich nicht zuletzt) ist die Publish/Subscribe-Funktion 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-/Abonnementfunktion von Redis verwenden!
Antwort: Verwenden Sie den Befehl „keys“, um die Schlüsselliste des angegebenen Modus zu scannen.
Die andere Partei fragte dann: Wenn dieser Redis Dienste für Online-Unternehmen bereitstellt, welche Probleme gibt es bei der Verwendung des Tastenbefehls?
Zu diesem Zeitpunkt müssen Sie eine wichtige Funktion von Redis beantworten: Redis ist Single-Threaded. Die Schlüsselanweisung führt dazu, dass der Thread für einen bestimmten Zeitraum blockiert wird und der Onlinedienst angehalten wird. Der Dienst kann erst wiederhergestellt werden, wenn die Anweisung ausgeführt wird. Zu diesem Zeitpunkt können Sie den Scan-Befehl verwenden, um die Schlüsselliste des angegebenen Modus zu extrahieren, es besteht jedoch eine gewisse Wahrscheinlichkeit einer Duplizierung. Führen Sie dies jedoch nur einmal auf dem Client aus, dies wird jedoch insgesamt der Fall sein länger sein als die direkte Verwendung von Tastenbefehlen.
Antwort: Wenn die Ablaufzeit einer großen Anzahl von Schlüsseln zu konzentriert eingestellt ist, kann es bei Redis zum Zeitpunkt des Ablaufs zu einer kurzen Verzögerung kommen. Im Allgemeinen muss der Zeit ein Zufallswert hinzugefügt werden, um die Ablaufzeit zu verteilen.
Antwort: Im Allgemeinen wird die Listenstruktur als Warteschlange verwendet, rpush erzeugt Nachrichten und lpop verbraucht Nachrichten. Wenn keine Nachricht von lpop eingeht, schlafen Sie eine Weile und versuchen Sie es erneut. Was ist, wenn die andere Partei fragt, ob Schlaf genutzt werden kann? Es gibt auch einen Befehl namens blpop in list. Wenn keine Nachricht vorhanden ist, wird er blockiert, bis die Nachricht eintrifft. Was ist, wenn die andere Partei fragt, ob es einmal produziert und mehrmals konsumiert werden kann? Mithilfe des Pub/Sub-Topic-Abonnentenmodells kann eine 1:N-Nachrichtenwarteschlange implementiert werden.
Wenn die andere Partei fragt, was sind die Nachteile von Pub/Sub?
Wenn der Verbraucher offline geht, gehen die produzierten Nachrichten verloren, sodass Sie eine professionelle Nachrichtenwarteschlange wie RabbitMQ verwenden müssen.
Wenn die andere Partei fragt, wie Redis die Verzögerungswarteschlange implementiert?
Ich schätze, jetzt willst du den Interviewer totprügeln, wenn du einen Baseballschläger in der Hand hast, warum stellst du dann so detaillierte Fragen? Aber Sie waren sehr zurückhaltend und antworteten dann ruhig: Verwenden Sie sortedset, verwenden Sie den Zeitstempel als Bewertung, den Nachrichteninhalt als Schlüssel, rufen Sie zadd auf, um die Nachricht zu erstellen, und der Verbraucher verwendet die Anweisung zrangebyscore, um die Daten abzurufen, die vor N Sekunden abgefragt wurden zur Bearbeitung. An dieser Stelle hat Ihnen der Interviewer heimlich einen Daumen nach oben gegeben. Aber was er nicht wusste war, dass du in diesem Moment hinter dem Stuhl deinen Mittelfinger hobst.
Verwenden Sie zuerst setnx, um die Sperre zu ergreifen. Nachdem Sie sie ergriffen haben, fügen Sie der Sperre mit „expire“ eine Ablaufzeit hinzu, um zu verhindern, dass die Sperre vergisst, sie freizugeben.
Zu diesem Zeitpunkt wird Ihnen die andere Partei mitteilen, dass Ihre Antwort gut ist, und dann fragen, was passiert, wenn der Prozess unerwartet abstürzt oder aus Wartungsgründen neu gestartet werden muss, bevor er „expire after setnx“ ausführt? Zu diesem Zeitpunkt müssen Sie eine überraschende Rückmeldung geben: Oh ja, diese Sperre wird niemals aufgehoben. Dann müssen Sie sich am Kopf kratzen, einen Moment so tun, als ob das nächste Ergebnis Ihre eigene Initiative wäre, und dann antworten: Ich erinnere mich, dass der Befehl set sehr komplexe Parameter hat. Dies sollte in der Lage sein, setnx festzulegen und abzulaufen gleichzeitig zu einer Gebrauchsanweisung zusammengefasst! Zu diesem Zeitpunkt wird die andere Partei lächeln und leise in seinem Herzen sagen: Presse, dieser Typ ist nicht schlecht.
Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Einführung in die Programmierung! !
Das obige ist der detaillierte Inhalt von40 Redis-Interviewfragen, die Sie nicht verpassen dürfen (einschließlich Antworten und Mindmaps). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!