Se si desidera memorizzare un dict python in redis, è meglio memorizzarlo come stringa json.
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
mydict = { 'var1' : 5, 'var2' : 9, 'var3': [1, 5, 9] }
rval = json.dumps(mydict)
r.set('key1', rval)
Durante il recupero de-serializzare utilizzando json.loads
data = r.get('key1')
result = json.loads(data)
arr = result['var3']
io preferisco SET/GET sopra HMSET/HGETALL perché il tempo la complessità di quest'ultima operazione è O (N).
E i tipi (ad es. Byte) non serializzati dalle funzioni JSON?
È possibile scrivere funzioni encoder/decoder per tipi che non possono essere serializzati con le funzioni JSON. per esempio. scrittura di base64/ASCII funzione encoder/decodificatore per array di byte.
fonte
2018-01-31 08:09:44
se è una struttura di dati nidificata piuttosto che semplicemente dict, ad esempio contiene alcuni array ecc. Serializza i tuoi dati con 'json.dumps()' scrive come stringa e dopo aver ripreso da redis user 'json.load() 'per deserializzare di nuovo la struttura dati python – andi
' json.dumps() 'e' json.loads() 'funzionerà solo se si sta bene con le chiavi del dizionario sempre stringhe. Se non lo sei, potresti prendere in considerazione l'uso di pickle. – ryechus
Provate https://github.com/richardasaurus/persistent-dict – NotHilaryClinton