Implementierungsmethode: 1. Jede Datenstruktur verfügt über eine eigene zugrunde liegende interne Codierungsimplementierung, und es gibt mehrere Implementierungen, sodass Redis im entsprechenden Szenario die entsprechende interne Codierung auswählt. 2. Jede Datenstruktur verfügt über mehr als zwei Arten interner Codierung 3. Interne Codierung kann als interne Implementierung verschiedener externer Datenstrukturen verwendet werden.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, Redis Version 5.0.10, DELL G3-Computer.
Redis verfügt über fünf grundlegende Datenstrukturen: String, Hash, Set, Zset und Liste. Im Folgenden wird erläutert, wie die unterste Ebene sie beim Herunterladen der Redis 3.0.6-Version implementiert.
Zusammenfassend
(1) Jede Datenstruktur verfügt über eine eigene zugrunde liegende interne Codierungsimplementierung, und es gibt mehrere Implementierungen, sodass Redis im entsprechenden Szenario die entsprechende interne Codierung auswählt.
(2) Sie können sehen, dass jede Datenstruktur mehr als zwei interne Codierungsimplementierungen hat. Beispielsweise enthält die String-Datenstruktur drei interne Codierungen: raw, int und embstr.
(3) Gleichzeitig können einige interne Codierungen als interne Implementierungen verschiedener externer Datenstrukturen verwendet werden. Ziplist ist beispielsweise eine interne Codierung, die Hash, List und Zset gemeinsam haben.
Dynamic String SDS
SDS ist die Abkürzung für „Simple Dynamic String“. Zeichenfolgen, die in allen Szenarien in Redis erscheinen, werden grundsätzlich von SDS implementiert:
Alle nicht numerischen Schlüssel, wie zum Beispiel: key msg in set msg „hello“
Der Wert des String-Datentyps, zum Beispiel: Wert „hello“ in set msg „hello“
„String-Wert“ in Nicht-String-Datentypen, wie zum Beispiel: „Apfel“ „Banane“ in rpush Früchte „Apfel“ „Banane“
SDS sieht aus Dies:
free: Wie viel Platz ist noch übrig?
len: String-Länge
buf: Gespeichertes Zeichenarray
Speicherplatz-Vorabzuweisung
Um den Speicheraufwand für die Änderung des String-Agenten zu reduzieren Bei der Anzahl der Zuweisungen wendet SDS die Strategie der „einmaligen Verwaltung“ an:
Wenn die SDS-Länge nach der Änderung
Wenn die SDS-Länge >= 1 MB beträgt Nach der Änderung erreicht die Erweiterung nicht nur die geänderte Länge, sondern verfügt auch über zusätzlichen Speicherplatz von 1 MB.
Lazy Space Release
Um Speicherneuzuweisungsvorgänge beim Verkürzen von Zeichenfolgen zu vermeiden, gibt SDS beim Verkürzen der Daten nicht sofort Speicherplatz frei.
int
sind alle Arten von Zahlen, die in Redis gespeichert sind, einschließlich des absichtlich hinzugefügten „“ lpop, rpop
sieht so aus:
ist in zwei Teile unterteilt:
„Koordinationsteil“: orange
Kopf: zeigt auf den Kopf einer bestimmten doppelt verketteten ListeSchwanz: zeigt auf das Ende einer bestimmten doppelt verketteten Liste
Redis-Tutorial
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die fünf Datenstrukturen von Redis auf der zugrunde liegenden Ebene. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!