2013-04-16 2 views
5

Какую библиотеку или метод можно использовать в Python, чтобы я мог взять строку и сжать ее для хранения внутри Redis? Цель состоит в том, чтобы уменьшить размер некоторых строк (cPickle d объектов), когда они проходят через провод, за счет некоторой вычислительной мощности.Как сжать строку в Python, чтобы сохранить ее в Redis?

Я считаю, что результирующий объект должен быть типа str перед хранением. Я использую библиотеку redis-py.

Большое спасибо!

+0

Должно быть в состоянии хранить массив байтов в Redis? –

ответ

5

Я рекомендую вам zlib:

import zlib 

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

decompressedString = zlib.decompress(compressedString) 
+3

Для большинства целей я бы тоже пошел с zlib. Если нужно иметь дело с более крупными строками и несколько более качественным сжатием, рассмотрите bz2, хотя это связано с большим количеством циклов процессора. Сравнение можно найти здесь (http://log.brandonthomson.com/2011/01/quick-python-gzip-vs-bz2-benchmark.html), хотя YMMV. – marcj

+0

Exaclty, zlib является своего рода дешевым в цикле процессора и имеет минимальные накладные расходы, поскольку он не хранит метаданные. – pmoleri

Смежные вопросы