2013-04-16 17 views
5

Jaką bibliotekę lub metodę mogę użyć w Pythonie, aby móc pobrać ciąg i skompresować go, aby był przechowywany wewnątrz Redis? Celem jest zmniejszenie rozmiaru niektórych ciągów (cPickle obiektów d), gdy przechodzą przez przewód, kosztem pewnej mocy obliczeniowej.Jak skompresować ciąg znaków w Pythonie, aby zapisać go w Redis?

Uważam, że wynikowy obiekt musi być typu str przed zapisaniem. Używam biblioteki redis-py.

Dziękuję bardzo!

+0

Powinny być w stanie przechowywać tablicę bajtów REDiS? –

Odpowiedz

5

Polecam Ci zlib:

import zlib 

compressedString = zlib.compress(originalString, 9) # Compress at level 9 

decompressedString = zlib.decompress(compressedString) 
+3

Dla większości celów, również bym zlib. Jeśli chodzi o większe ciągi i nieco lepszą kompresję, należy wziąć pod uwagę bz2, choć kosztem większej liczby cykli procesora. Porównanie można znaleźć [tutaj] (http://log.brandonthomson.com/2011/01/quick-python-gzip-vs-bz2-benchmark.html) chociaż YMMV. – marcj

+0

Exaclty, zlib jest tanie w cyklach procesora i ma minimalny narzut, ponieważ nie przechowuje metadanych. – pmoleri

Powiązane problemy