gpt4 book ai didi

python - 如何在 Aerospike(缓存)中存储 Gzipped 内容?

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:55 24 4
gpt4 key购买 nike

我在这里使用 aerospike python 客户端。在缓存中存储纯字符串时我没有发现任何问题,因为当我检索 key 时,我得到的字符串与我执行 conn.get(key) 时保存的字符串相同

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 压缩的内容。请指导我哪里做错了。


我知道我们可以将内容分解成更小的 block 以便在获取它们后进行存储和连接,但同样我需要在获取数据后对内容进行 Gzip 压缩。所以我想为什么不直接存储 Gzipped 内容,但这似乎对我不起作用。感谢任何线索,谢谢。

最佳答案

如果 put_value 是一个字符串,它将在遇到的第一个 \0 字符处被截断。在发送之前尝试将 put_value 转换为字节数组:

conn.put(key, {'value': bytearray(put_value,"utf-8")})

关于python - 如何在 Aerospike(缓存)中存储 Gzipped 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40656795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com