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)})'' –