2010-01-20 8 views
15

Auf PHP.net Ich betrachte die Memcache::set Funktion und es hat diese optionale Flag Kompression zu verwenden ...Was ist die Komprimierung für PHP in Memcache?

Verwenden MEMCACHE_COMPRESSED komprimiert, um die Artikel zu speichern (verwendet zlib).

$memcache_obj->set('var_key', 
        'some really big variable', 
        MEMCACHE_COMPRESSED, 
        50); 

Ich bin gespannt, was wäre der Vorteil davon sein, nur weniger Platz mit? Es scheint, als würde dies den Prozess verlangsamen?

+1

Es würde verwendet weniger Platz in memcache und weniger Zeit, um das Netzwerk zu übertragen über. Sie fügen jedoch den Aufwand für die Komprimierung und Dekomprimierung hinzu. Außerdem besteht die Gefahr der Inkompatibilität mit anderen Memcache-Clients und Dingen wie dem Memcache-Inkrement-Befehl. –

Antwort

24

Komprimieren und Dekomprimieren auf den Servern, die PHP ausgeführt wird, kann schnell sein - je nach Ihrem Netzwerk und die Last auf den Servern, kann es schneller sein, als mehr übertragen (nicht komprimiert) Daten zu und von der memcached Server über das Netzwerk.

Ihre Daten auch komprimieren Mittel auf den Memcached-Server weniger Speicher benötigt wird.

Wie oft haben Sie zwischen CPU, Netzwerk und RAM wählen - und Sie müssen in Betracht Ihre Server und Netzwerk, ihre Last und zur Verfügung stehende Mittel ergreifen, um entscheiden zu können.

Was wird die "quickiest" Lösung in Ihrer speziellen Situation sein? Nur du kannst es sagen ... Und die einzige Möglichkeit, das zu wissen, ist wahrscheinlich, beide Lösungen unter "realen Bedingungen" zu testen.


Memcached-Einträge dürfen nicht größer als 1 MB sein; Ich nehme an, in gewisser Weise kann diese Komprimierung dazu beitragen, Einträge etwas größer als 1 MB zu machen (wenn noch nicht komprimiert) in memcached.

+1

Upvote für Erwähnung von max. Artikelgröße. –

+0

Martin, vielen Dank für eine weitere tolle Antwort! – Industrial

4

Du hast Recht, es ist ein Trade-off zwischen weniger Platz wegnimmt oder mehr CPU-Zyklen auffressen.

Sie haben zu entscheiden, welche Ressource Sie kostbarer ist, RAM oder CPU.

+1

Hinweis: RAM. Moderne CPUs können sehr schnell alte Algorithmen wie zlib ausführen. –

+1

Ein weiterer Hinweis. Moderner RAM ist groß. Immer Profil ... –

4
  1. memcached kann verwendet werden, um einen verteilten Cache zwischen Rechnern zu halten. In diesem Fall müssen Updates für den Cache über das Netzwerk oder eine andere Verbindung zwischen den Computern gesendet werden. Die Komprimierung reduziert die Menge der zu sendenden Daten, reduziert somit die Übertragungszeit und kann somit die Systemleistung verbessern.
  2. sogar innerhalb eines Host ist Kompressions- Größenordnungen schneller als auf Speicherseiten Swapping/von den Platten, so dass, wenn Sie wegen Speichermangel tauschen, wird Kompression die Menge zu reduzieren, die getauscht werden muss und dadurch die Leistung zu verbessern. Unter den Bedingungen der rechten Ecke kann die Komprimierung die Datenmenge so reduzieren, dass Sie gar nicht tauschen müssen - ein großer Gewinn in der Leistung.
+1

Wenn Ihr Memcache-Host (oder Hosts) vertauscht ist, tun Sie etwas sehr falsch. – dland

Verwandte Themen