Heim > Artikel > Backend-Entwicklung > Memcache-Speicherzuweisungsmechanismus
Die Speicherzuweisung von Memcached erfolgt in Seiteneinheiten Standardmäßig ist eine Seite 1M groß, die durchgereicht werden kann Der Parameter -I wird beim Start angegeben. Wenn Sie Speicher beantragen müssen, teilt memcached eine neue Seite und weist sie dem erforderlichen Slab-Bereich zu. Sobald eine Seite zugewiesen ist, wird sie vor dem Neustart nicht recycelt oder neu zugewiesen
Memcached und Anstatt alle Datengrößen zusammenzufassen, , wird der Datenraum im Voraus in eine Reihe von Platten unterteilt, und jede Platte ist nur für die Datenspeicherung innerhalb eines bestimmten Bereichs verantwortlich . Wie in der folgenden Abbildung dargestellt, speichert jede Platte nur Daten, die größer als die Größe der vorherigen Platte und kleiner oder gleich ihrer eigenen maximalen Größe sind. Beispiel: Slab 3 speichert nur Daten zwischen 137 und 224 Byte. Wenn eine Datengröße 230 Byte beträgt, wird sie Slab 4 zugewiesen. Wie aus der folgenden Abbildung ersichtlich ist, ist der für jede Platte verantwortliche Speicherplatz standardmäßig nicht gleich. Der Maximalwert der nächsten Platte beträgt das 1,25-fache des vorherigen. Dies kann geändert werden
Ändern Sie den Parameter -f, um das Wachstumsverhältnis zu ändern.
Chunk ist eine Reihe fester Speicherplätze. Diese Größe ist die maximale Speichergröße der Platte, die ihn verwaltet. Beispiel: Alle Blöcke von Slab 1 sind 104 Byte groß und alle Blöcke von Slab 4 sind 280 Byte groß. Im Chunk speichert memcached tatsächlich zwischengespeicherte Daten. Da die Chunk-Größe auf den maximalen Wert festgelegt ist, den die Platte speichern kann, können alle der aktuellen Platte zugewiesenen Daten im Chunk gespeichert werden. Wenn die Zeitdatengröße kleiner als die Blockgröße ist, bleibt der freie Speicherplatz ungenutzt. Dies soll eine Speicherfragmentierung verhindern. In der Abbildung unten ist beispielsweise chunk
Die Größe beträgt 224 Byte, die gespeicherten Daten sind nur 200 Byte groß und die restlichen 24 Byte sind im Leerlauf.
diese wird jedoch nicht sofort beim Start belegt. Sie wird nach und nach jeder Platte nach Bedarf zugewiesen .
Wenn neue Cache-Daten gespeichert werden sollen, wählt memcached zunächst eine geeignete Platte aus und prüft dann, ob freie Blöcke in der Platte vorhanden sind. Wenn nicht, werden diese direkt gespeichert wird beantragt.Der Slab beansprucht den Speicher in Seiteneinheiten. Wenn also die ersten Daten eingegeben werden, wird dem Slab unabhängig von der Größe eine 1-MB-Seite zugewiesen. Nach der Beantragung einer Seite teilt Slab den Speicher dieser Seite entsprechend der Größe des Blocks auf, sodass daraus ein Array von Blöcken wird, und wählt dann einen aus dem Block-Array aus, um Daten zu speichern. Wie unten gezeigt, Platte 1 und Platte
2 Ordnen Sie eine Seite zu und teilen Sie sie entsprechend ihrer jeweiligen Größe in Chunk-Arrays auf.
Basierend auf der obigen Einführung lautet die Speicherzuweisungsstrategie von Memcached: Ordnen Sie Seiten entsprechend den Slab-Anforderungen zu, und jede Slab verwendet nach Bedarf Chunk-Speicher.
Hier sind mehrere Funktionen zu beachten: