2013-04-16 16 views
5

Tôi có thể sử dụng thư viện hoặc phương pháp nào trong Python để tôi có thể lấy một chuỗi và nén nó để được lưu trữ bên trong Redis? Mục tiêu là để giảm kích thước của một số chuỗi (cPickle d đối tượng) khi chúng đi qua dây, với chi phí của một số năng lượng tính toán.Làm thế nào để nén một chuỗi trong Python để lưu trữ nó trong Redis?

Tôi tin rằng đối tượng kết quả phải thuộc loại str trước khi lưu trữ. Tôi đang sử dụng thư viện redis-py.

Cảm ơn rất nhiều!

+0

nên có thể lưu trữ một mảng byte trong redis? –

Trả lời

5

tôi khuyên bạn nên zlib:

import zlib 

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

decompressedString = zlib.decompress(compressedString) 
+3

Đối với hầu hết các mục đích, tôi cũng sẽ đi với zlib. Nếu xử lý các chuỗi lớn hơn và nén phần nào tốt hơn là cần thiết, hãy xem xét bz2, mặc dù nó đi kèm với chi phí của nhiều chu kỳ CPU hơn. Có thể tìm thấy một so sánh [ở đây] (http://log.brandonthomson.com/2011/01/quick-python-gzip-vs-bz2-benchmark.html) mặc dù YMMV. – marcj

+0

Exaclty, zlib là loại rẻ tiền trong chu kỳ CPU và có kích thước tối thiểu trên không vì nó không lưu trữ siêu dữ liệu. – pmoleri