2013-04-16 22 views
5

Python'da hangi kütüphaneyi veya yöntemi kullanabilirim, böylece bir string alabilir ve Redis’in içinde saklanmak için sıkıştırılabilir miyim? Amaç bazı tellerin (cPickle d nesneleri), telden geçerken, bazı hesaplama güçlerinin maliyetini azaltmaktır.Python'da bir dizeyi Redis'te saklamak için nasıl sıkıştırılır?

Sonuçta oluşan nesnenin saklamadan önce str türünde olması gerektiğine inanıyorum. redis-py kitaplığını kullanıyorum.

Çok teşekkürler!

+0

REDIS bir bayt dizisi depolamak mümkün olmalı mı? –

cevap

5

Sana zlib tavsiye:

import zlib 

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

decompressedString = zlib.decompress(compressedString) 
+3

Çoğu amaç için zlib ile de giderdim. Daha büyük dizelerle ilgileniyorsanız ve biraz daha iyi bir sıkıştırma gerekiyorsa, daha fazla CPU döngüsünün maliyetine rağmen, bz2'yi düşünün. Bir karşılaştırma [burada] (http://log.brandonthomson.com/2011/01/quick-python-gzip-vs-bz2-benchmark.html) olsa da YMMV. – marcj

+0

Exaclty, zlib, cpu döngülerinde ucuzdur ve meta verileri saklamaması nedeniyle minimum boyut yüküne sahiptir. – pmoleri