Frage

Warum gibt es in. ein fest codiertes Chunk-Limit (0,5 Megabyte nach der Komprimierung)? zwischengespeichert?Hat jemand seine neu kompiliert, um es zu verbessern?Ich weiß, ich sollte solche großen Stücke nicht herumschicken, aber diese besonders schweren Stücke passieren mir von Zeit zu Zeit und richten Chaos an.

War es hilfreich?

Lösung

Diese Frage stand früher im offizielle FAQ

Auf welche Grenzen im Memcached könnte ich stoßen?(Wayback-Maschine)

Zitieren:

Die einfachen Grenzen, die Sie wahrscheinlich mit Memcache sehen werden, sind die Schlüssel- und Elementgrößengrenzen.Die Schlüssel sind auf 250 Zeichen beschränkt.Speicherte Daten können 1 Megabyte nicht überschreiten, da dies die größte typische Plattengröße ist. "

Die FAQ wurden nun überarbeitet und es gibt nun zwei separate Fragen zu diesem Thema:

Was ist die maximale Schlüssellänge?(250 Byte)

Die maximale Größe eines Schlüssels beträgt 250 Zeichen.Beachten Sie, dass dieser Wert geringer ist, wenn Sie Client "Präfixe" oder ähnliche Funktionen verwenden, da das Präfix an der Vorderseite der ursprünglichen Taste angegriffen wird.Kürzere Schlüssel sind im Allgemeinen besser, da sie Speicher sparen und weniger Bandbreite verwenden.

Warum ist die Größe von Elementen auf 1 Megabyte beschränkt?

Ahh, das ist eine beliebte Frage!

Kurze Antwort:Aufgrund der Funktionsweise des Speicherzuweisungsalgorithmus.

Lange Antwort:Die Speicherspeicher -Engine von Memcached (die in Zukunft steckbar/angepasst wird ...) verwendet einen Plattenansatz zur Speicherverwaltung.Das Gedächtnis wird in Plattenbrocken unterschiedlicher Größen unterteilt, beginnt mit einer minimalen Anzahl und steigt von einem Fakultät bis zum größtmöglichen Wert auf.

Angenommen, der Mindestwert beträgt 400 Bytes, und der Höchstwert beträgt 1 Megabyte und das Fakultät 1,20:

Platte 1 – 400 Bytes Platte 2 – 480 Bytes Platte 3 – 576 Bytes ...usw.

Je größer die Platte, desto mehr Lücke liegt zwischen ihm und der vorherigen Platte.Je größer der Maximalwert ist, desto weniger effizient ist der Speicherspeicher.Memcached muss auch einen Gedächtnis für jede vorhandene Platte voraberhalten. Daher erfordert das Festlegen eines kleineren Fakultäts mit einem größeren Maxwert noch mehr Overhead.

Es gibt noch andere Gründe, warum Sie das nicht tun möchten ...Wenn wir über eine Webseite sprechen und versuchen, so große Werte zu speichern/zu laden, tun Sie wahrscheinlich etwas falsch.Bei dieser Größe dauert es eine spürbare Zeit, die Datenstruktur in den Speicher zu laden und auszupacken, und Ihre Website wird wahrscheinlich nicht sehr gut abschneiden.

Wenn Sie wirklich Artikel mehr als 1 MB speichern möchten, können Sie die Memcacher mit einem bearbeiteten neu kompilieren slabs.c:POWER_BLOCK Wert oder verwenden Sie das ineffiziente Malloc/kostenlose Backend.Weitere Vorschläge sind eine Datenbank, Mogilefs usw.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top