2013-04-16 35 views
5

私はPythonでどのようなライブラリやメソッドを使うことができるので、文字列を圧縮してRedisの内部に格納することができますか?目的は、いくつかの計算能力を犠牲にして、ワイヤを通過するときにいくつかの文字列(cPickleオブジェクト)のサイズを減らすことです。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を考慮してください。ただし、CPUサイクルが増えます。 YMMVでも比較は[ここ](http://log.brandonthomson.com/2011/01/quick-python-gzip-vs-bz2-benchmark.html)で見つけることができます。 – marcj

+0

Exaclty、zlibはCPUサイクルで安価であり、メタデータを格納しないため最小サイズのオーバーヘッドを持ちます。 – pmoleri

関連する問題