we should use cPickle instead of str() to get the value length. Otherwise a call to __str__ may return something quite different! Also accounts for compression
pass the COMPRESS_LEVEL through to zlib as well