In meinem aktuellen Projekt verwende ich Memcache, um Schlüssel-Wert-Paare zu speichern, aber da die Kommunikation über den Socket zwischen meinem Prozess und dem Memcache erfolgt, kommt es zu großen Latenzen. Wir haben uns für Memcache entschieden, weil wir eine große Menge an Schlüssel-Wert-Paaren speichern mussten. Aber jetzt möchte ich das Wörterbuch als globale Datenstruktur in meinem Prozess speichern. Ist das eine gute Sache? Denn das Wörterbuch wird im Adressraum des Prozesses gespeichert werden. Vorschläge bitte....
Antworten
Zu viele Anzeigen?Der übliche Grund für die Verwendung von Memcached ist, dass Sie vertreiben den Cache auf mehrere Rechner zu verteilen, mit dem Ziel, sowohl die Daten verfügbar auf allen Rechnern, wobei auch die Lagerung von allen Maschinen. Wenn diese Anforderungen für Sie nicht zutreffen und Sie die zwischengespeicherten Daten nur auf einem einzigen Rechner benötigen, dann bietet Ihnen memcached nicht allzu viel. In diesem Fall könnte es eine gute Idee sein, das Wörterbuch in Ihren lokalen Prozess zu verschieben.
Ich schrieb eine ausführliche Antwort auf der "Über"-Seite von memcached zu finden. Ich habe Bilder gemalt und alles.
Zusammengefasst: Wenn Sie mehr als einen Prozess haben, wird Ihnen das Wörterbuch nicht helfen. Wenn Sie mehr als einen Prozess/Computer haben, werden Sie tonnenweise Speicher verbrauchen, der auf großartige Weise wiederverwendet werden könnte, wodurch Sie viel Geld sparen und mehr größere Dinge bekommen.
Wenn Ihre Daten nicht so groß sind, können Sie Ihr Python-Wörterbuch einfach mit cPickle.dump oder marshal.dump in Dateien auslagern und mit cPickle.load oder marshal.load wieder aus der Datei laden. Wenn Sie sich um den Speicherplatz sorgen müssen, können Sie bz2 oder gzip zum Komprimieren/Dekomprimieren während des Einlesens/Rückschreibens der Datei verwenden.