2
我在这里使用aerospike python客户端。同时存储在缓存中普通字符串我没有发现任何问题,因为当我取回钥匙,我得到我救了相同的字符串时,我做conn.get(键)如何在Aerospike(缓存)中存储Gzip内容?
import aerospike
CONN_AEROSPIKE_CONFIG = {'hosts': [('127.0.0.1', 3000)]}
conn = aerospike.client(CONN_AEROSPIKE_CONFIG).connect()
key = ('namspace_name', 'set_name', 'key_name')
value = "some big string"
conn.put(key, {'value': value})
如果我想保存gzip压缩的内容在价值的地方,我没有发现任何错误,但我无法找回确切的内容。
from gzip import GzipFile
from io import BytesIO
def compress_string(s):
zbuf = BytesIO()
with GzipFile(mode='wb', compresslevel=6, fileobj=zbuf, mtime=0) as zfile:
zfile.write(s)
return zbuf.getvalue()
put_value = compress_string(value)
conn.put(key, {'value': put_value})
_, _, get_value = conn.get(key)
我检查了put_value,get_value的打印值。他们不匹配,我需要gzip内容,因为我的内容超过1MB,我只需要gzip内容。请指导我在哪里做错了。
我知道,我们可以打破的内容分成较小的块存储,让他们以后串联,而我又需要获得数据后,GZIP内容。所以我想为什么不直接存储Gzip内容,但似乎并没有为我工作。任何潜在客户都会被安装,谢谢。
谢谢@ jboone100真的有帮助。但我已经取出格式“utf-8”,因为我在转换为bytearray时出错。所以我简单地重写了这行: 'conn.put(key,{'value':bytearray(put_value)})'' –